首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webkit.Net等待页面完全加载

Webkit.Net等待页面完全加载
EN

Stack Overflow用户
提问于 2013-01-07 11:12:44
回答 2查看 4.3K关注 0票数 2

我正在尝试用C#浏览器制作一个windows窗体应用程序。

我正在使用webkit浏览器:链接到浏览器

use浏览器输入了一个类文件,这样我就可以通过我将要使用的所有表单来访问它。

生成The浏览器的代码:

代码语言:javascript
复制
public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();

我有一段代码会出现一些问题:

代码语言:javascript
复制
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控制如下:

代码语言:javascript
复制
public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();

在一种形式中,我现在得到了这个代码(多亏了Tearsdontfalls):

代码语言:javascript
复制
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事件中的断点,也不是触发器。看来事件列表不起作用了..。

那为什么不起作用呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-07 18:05:49

您可以简单地在Webbrowser上的文档完成事件上创建一个事件侦听器,或者像这样动态地创建它:

代码语言:javascript
复制
globalVars.mainbrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(mainbrowser_DocumentCompleted);

其中mainbrowser_DocumentCompleted是您可以这样做的空白的名称(我使用了您提供的代码的名称):

代码语言:javascript
复制
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";
    }
}
票数 2
EN

Stack Overflow用户

发布于 2016-06-08 15:01:07

添加以下代码可以让事件在浏览器处于不可见模式时触发。

代码语言:javascript
复制
using (Bitmap bmp = new Bitmap(webKitBrowser.Width, webKitBrowser.Height))
{
    webKitBrowser.DrawToBitmap(
        bmp, 
        new Rectangle(
            webKitBrowser.Location.X, 
            webKitBrowser.Location.Y, 
            webKitBrowser.Width, 
            webKitBrowser.Height
        )
    );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14194735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档