在 GeckoFX 中检查 ReadyState
Check ReadyState in GeckoFX
我的 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)
private void navigateBrowser(string URL)
{
wb.Navigate(URL);
while (wb.Document.ReadyState != "complete")
{
Application.DoEvents();
}
while (wb.IsBusy)
{
Application.DoEvents();
}
}
我调用 navigateBrowser("http://facebook.com") and then i fill the form for login. After i submit the form, i have to login in another website (in linkedin.com) i call again the navigateBrowser("http://linkedin.com"),当尝试从 geckowebbrowser 调用某些元素时,我收到错误 "Object reference not set to an instance of an object."。我查看了 geckowebbrowser 的实际 URL,它仍然是 facebook.com,但我应该是 linkedin.com,因为我调用了 linkedin.com.
可能是什么问题?我该如何解决这个问题?
使用网络浏览器的 DocumentCompleted 事件。
因此,例如 - 您的应用程序中有一个按钮可以导航到特定网页,还有一个方法可以在加载后读取页面。
因此,在 DocumentCompleted 事件处理程序中调用该方法 - 这将确保页面已加载。
Application.DoEvents() 循环对于等待页面加载不是一个好主意。例如,如果在你的循环中 closes/crashes 应用程序,它仍然是 运行 并且不会关闭。
此致
我的 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)
private void navigateBrowser(string URL)
{
wb.Navigate(URL);
while (wb.Document.ReadyState != "complete")
{
Application.DoEvents();
}
while (wb.IsBusy)
{
Application.DoEvents();
}
}
我调用 navigateBrowser("http://facebook.com") and then i fill the form for login. After i submit the form, i have to login in another website (in linkedin.com) i call again the navigateBrowser("http://linkedin.com"),当尝试从 geckowebbrowser 调用某些元素时,我收到错误 "Object reference not set to an instance of an object."。我查看了 geckowebbrowser 的实际 URL,它仍然是 facebook.com,但我应该是 linkedin.com,因为我调用了 linkedin.com.
可能是什么问题?我该如何解决这个问题?
使用网络浏览器的 DocumentCompleted 事件。
因此,例如 - 您的应用程序中有一个按钮可以导航到特定网页,还有一个方法可以在加载后读取页面。
因此,在 DocumentCompleted 事件处理程序中调用该方法 - 这将确保页面已加载。
Application.DoEvents() 循环对于等待页面加载不是一个好主意。例如,如果在你的循环中 closes/crashes 应用程序,它仍然是 运行 并且不会关闭。
此致