0

私は当惑している問題を解決しようとしています。それは明らかなことかもしれませんが、何が間違っているのか本当にわかりません。

この方法でロードした WebBrowser を備えた winform があり、正常に動作します。

    WebBrowser.DocumentText = someHtmlCode;

私の winform の Web ブラウザで、右クリックして 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);

そこで、この方法で呼び出すことができる「sayHello」という名前の新しい JavaScript 関数を追加していますが、まだ適切に機能しています。

    WebBrowser.Document.InvokeScript("sayHello");

この時点ではすべて問題ありません。JavaScript 関数を実行して WebBrowser 内でアラートを取得できますが、WebBrowser を右クリックしてソース コードを取得すると、始まり。後で追加された JavaScript コードに関する痕跡はありませんが、呼び出したときに機能しているのでそこにあります。

もちろん、WebBrowser.HtmlDocument を調べても、JavaScript も表示されません。ソース コードを見ているのと同じです。

私の質問は、新しい JavaScript コードはどこに行くのか、どうすれば元に戻せるのかということです。更新された HTML コードを取得する必要があります。

ありがとう!

4

1 に答える 1

0

ソース コードは更新されたドキュメントを提供しません。更新されたドキュメントを取得するには、次を使用する必要があります

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

唯一のオプションは、最上位ノードに移動し、Html の現在の状態の innerHtml を取得することです。

于 2013-04-24T08:36:15.763 に答える