WebClient запускает JavaScript - PullRequest
8 голосов
/ 21 марта 2011

У меня есть один.Страница ASPX, которая имеет некоторые функции JavaScript, которые управляют подкачкой.

Я могу запустить эту функцию javascript через веб-браузер с помощью следующего метода в WebBrowser1_DocumentCompleted

WebBrowser1.Document.Window.DomWindow.execscript ("somefunction();", "JavaScript")

Веб-браузер работает очень медленно, и япредпочитаете использовать System.Net.WebClient.DownloadString.

Есть ли какой-нибудь способ запустить этот скрипт с методами System.Net.WebClient, которые быстрее или каким-то другим способом?

1 Ответ

21 голосов
/ 21 марта 2011

Ну нет.WebClient - это клиент HTTP , а не веб-браузер.

HTTP-клиент следует спецификации HTTP;тот факт, что ваши HTTP-запросы приводят к HTML, не имеет отношения к клиенту.

С другой стороны, веб-браузер, помимо того, что HTTP-клиент, также знает, как анализировать HTML-ответы (и выполнять JavaScript,и т.Браузеры без головы также обычно довольно быстрые по сравнению с обычными браузерами, так как им не нужно выполнять какой-либо рендеринг.

Существует несколько браузеров без головы. HtmlUnit (который может быть преобразован для запуска в .NET) кажется хорошим выбором, как и envjs (написано на JavaScript, что можетбыть встроенным в .NET ).К сожалению, у меня нет опыта работы с ними, но они оба выглядят очень круто, особенно envjs.Обновление: хороший, более современный список безголовых браузеров был опубликован на GitHub .

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

...