Проблема с использованием элемента управления веб-браузера - PullRequest
0 голосов
/ 19 января 2011

Я работаю над скребком и использую веб-браузер. Теперь я перемещаюсь по страницам 1 на 1 в одном элементе управления.

но пока я делаю это, иногда браузер начинает загружать другую страницу до того, как первая страница будет полностью загружена. в то время как иногда это останавливает все выполнение, и ни одна страница не находится в процессе выполнения.

Я использую событие webBrowser1_DocumentCompleted для обработки документа, и иногда он загружается более одного раза.

Так есть ли какое-либо решение, которое я могу проверить, занят ли мой веб-браузер работой или просмотрел.

1 Ответ

4 голосов
/ 19 января 2011

Я заметил, что документ завершается несколько раз, если страница использует фреймы.
Вы можете получить URL загруженной страницы из аргументов события WebBrowser1_DocumentCompleted.

Если это так, то естьнесколько кадров, вы можете сравнить URL-адрес WebBrowser1_DocumentCompleted с WebBrowser1.URL

так

if(e.URL == webBrowser1.url) {
  // The main page is done loading
}

Или вы можете попробовать проверить

WebBrowser1.ReadyState == WebBrowserReadyState.Complete

Пара я нашелс элементом управления WinForms WebBrowser

DOM, к которому у вас есть доступ, не обновляется при внесении изменений через AJAX.

Если вы не выполните дополнительную работу, чтобы определить, когда создается новое окно, ипоместите это во вкладку (есть несколько статей о том, как это сделать, если вам нужно, я могу отправить ссылку) страницы, которые открывают новые окна, будут запущены в новом процессе, так что вы потеряете возможность очищать их, а они теряютсеанса, поэтому, если вы вошли на веб-страницу, вы выйдете из системы в новом окне.

...