【问题标题】:Check ReadyState in GeckoFX在 GeckoFX 中检查 ReadyState
【发布时间】:2015-05-26 20:15:37
【问题描述】:

我为我的 C# 项目使用 WebBrowser 控件。我尝试集成 GeckoFX 而不是 WebBrowser。因为我总是在 WebBrowser 中更改输入,所以我必须等到网站完全加载。这就是为什么,我使用以下方法:

   private void navigateBrowser(string URL)
        {
            wb.Navigate(URL);
            while (wb.ReadyState != WebBrowserReadyState.Complete)
            {
                Thread.Sleep(1);
                Application.DoEvents();
            }
        }

我已经为 GeckoFX 更改了这种方法,如下所示: 私人无效导航浏览器(字符串网址)

private void navigateBrowser(string URL)
        {
            wb.Navigate(URL);

  while (wb.Document.ReadyState != "complete")
            {
                Application.DoEvents();
            }
            while (wb.IsBusy)
            {
                Application.DoEvents();
            }
}

我打电话给 navigateBrowser("http://facebook.com") 然后我填写表格进行登录。提交表单后,我必须登录另一个网站(在linkedin.com)我再次调用navigateBrowser(“http://linkedin.com”),当尝试从geckowebbrowser调用某些元素时,我收到错误“对象引用不设置为对象的实例。”。我查看了 geckowebbrowser 的实际 URL,它仍然是 facebook.com,但我应该是linkedin.com,因为我调用了linkedin.com。

可能是什么问题?我该如何解决这个问题?

【问题讨论】:

    标签: gecko geckofx readystate


    【解决方案1】:

    使用 webbrowser 的 DocumentCompleted 事件。

    因此,例如 - 您的应用中有一个按钮可以导航到特定网页,并且还有一个方法可以在加载后读取该页面。

    因此,在 DocumentCompleted 事件处理程序中,调用该方法 - 这将确保页面已加载。

    Application.DoEvents() 循环不是等待页面加载的好主意。例如,如果在你的循环过程中有什么东西关闭/崩溃了应用程序,它仍然会运行并且不会关闭。

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 2013-10-01
      • 1970-01-01
      • 2019-11-05
      • 2019-06-22
      相关资源
      最近更新 更多