我正在尝试用C#浏览器制作一个windows窗体应用程序。
我正在使用webkit浏览器:链接到浏览器
use浏览器输入了一个类文件,这样我就可以通过我将要使用的所有表单来访问它。
生成The浏览器的代码:
public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();我有一段代码会出现一些问题:
globalVars.mainBrowser.Navigate("http://www.somesite.com/");
while (globalVars.mainBrowser.IsBusy)
{
System.Threading.Thread.Sleep(500);
}
globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";但这不管用。如果我在“时间”之后做了一个消息框,它会在呈现页面之前出现.
那么,等待站点完全加载的最佳方式是什么呢?
更新1
在一个独立的类文件中,我是否让webkit控制如下:
public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();在一种形式中,我现在得到了这个代码(多亏了Tearsdontfalls):
public void loginthen()
{
globalVars.mainBrowser.DocumentCompleted += mainBrowser_DocumentCompleted;
globalVars.mainBrowser.Navigate("http://www.somesite.com/");
}
void mainBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var send = sender as WebKit.WebKitBrowser;
if (send.Url == e.Url)
{
MessageBox.Show("Inloggen");
globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";
}
}但没有留言盒出现。但是,如果我使用本地(在同一表单上) webkit浏览器,我将得到te MessageBox。但是,用户字段没有被填充。
即使是documentCompleted事件中的断点,也不是触发器。看来事件列表不起作用了..。
那为什么不起作用呢?
发布于 2013-01-07 18:05:49
您可以简单地在Webbrowser上的文档完成事件上创建一个事件侦听器,或者像这样动态地创建它:
globalVars.mainbrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(mainbrowser_DocumentCompleted);其中mainbrowser_DocumentCompleted是您可以这样做的空白的名称(我使用了您提供的代码的名称):
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
var send = sender as WebKit.WebKitBrowser;
if (send.Url == e.Url) {
globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";
}
}发布于 2016-06-08 15:01:07
添加以下代码可以让事件在浏览器处于不可见模式时触发。
using (Bitmap bmp = new Bitmap(webKitBrowser.Width, webKitBrowser.Height))
{
webKitBrowser.DrawToBitmap(
bmp,
new Rectangle(
webKitBrowser.Location.X,
webKitBrowser.Location.Y,
webKitBrowser.Width,
webKitBrowser.Height
)
);
}https://stackoverflow.com/questions/14194735
复制相似问题