2013-04-24 3 views
0

Я пытаюсь решить проблему, которая меня смущает. Это может быть что-то очевидное, но я не могу понять, что случилось.C# WebBrowser, впрыскивание JavaScript не обновляет HtmlDocument

У меня есть WinForm с WebBrowser, который я загрузить этот путь, и она отлично работает:

WebBrowser.DocumentText = someHtmlCode; 

В WebBrowser моей WinForm, я правой кнопкой мыши, чтобы получить исходный HTML и проверить, что код является то же самое я установил в свойстве DocumentText ... все в порядке на данный момент.

Поэтому, как только я получаю его загружен и работает, я впрыскивать некоторый код JavaScript в него, что-то вроде этого:

HtmlElement head = WebBrowser.Document.GetElementsByTagName("head")[0]; 
    HtmlElement scriptEl = WebBrowser.Document.CreateElement("script"); 
    IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement; 
    element.text = "function sayHello() { alert('hello') }"; 
    head.AppendChild(scriptEl); 

Так я добавил новую функцию JavaScript с именем «SayHello», что я могу назвать это путь, и он все еще работает должным образом:

WebBrowser.Document.InvokeScript("sayHello"); 

Так что все в порядке в данный момент, я могу запустить функцию JavaScript и получать уведомление внутри WebBrowser, но что замешательство меня является то, что когда я щелкните правой кнопкой мыши на WebBrowser чтобы получить исходный код, я получаю ту же треску e Я установил в начале. Никаких следов кода JavaScript, добавленного позже, хотя он есть, потому что он работает, когда я его вызываю.

Конечно, если я смотрю в WebBrowser.HtmlDocument, я тоже не вижу JavaScript, это то же самое, что я смотрю на исходный код.

Итак, мой вопрос: где находится новый код JavaScript и как его вернуть? Мне нужно получить обновленный код HTML.

Спасибо!

+0

Исходный код - это именно тот, исходный источник веб-страницы. Он не отражает текущее состояние DOM (которое вы динамически манипулируете). –

+0

Я понял, что, но как я могу получить обновленный код, есть ли способ? –

+0

[Этот вопрос] (http://stackoverflow.com/questions/7349667/how-to-grab-the-contents-which-updated-by-javascript-webbrowser) может помочь вам или указать вам хорошее направление. –

ответ

0

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

HtmlElement head = WebBrowser.Document.GetElementsByTagName("head")[0]; 
string h = head.innerHtml; 

Единственный вариантом для навигации верхнего узла и получить innerHtml для текущего состояния Html.

+0

Да, как предложил Дж. Стин, навигация DOM является единственным подходом. Таким образом, нет способа получить весь обновленный код, но я могу получить его из узлов innerHtml, как вы говорите. Спасибо всем! –

Смежные вопросы