0

プログラムで webbrowser コントロールを使用していますが、サイトに移動した後、webbrowser のドキュメントを使用して要素を取得しようとすると (getelementbyid ... など)、いくつかの要素が欠落していることに気付きます。

要素がJavaScriptによってページに動的に挿入されることを知っています。

私はそれらの要素を取得するメソッドを検索し、ページで実行されるjavascriptを挿入して取得しようとし、window.externalメソッドによって(または単にアラートで試行するために)いくつかの要素を返しますが、このスクリプトが実行されたとしても、元のコードのドキュメントのメソッドと同じ結果。

Internet Explorer で F12 を押してアクセスするのと同じように、プログラムのこの「見えない」要素にアクセスする方法はありますか? あなたの答えをありがとう、そして私のベッドの英語でごめんなさい。

これが私のコードです:

        private void button2_Click(object sender, EventArgs e)
    {
        //injecting and executing my javascript code
        HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
        HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
        IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
        element.text = "function sayHello() {  window.external.f1(document.getElementsByTagName('html')[0].innerHTML); }";
        head.AppendChild(scriptEl);
        webBrowser1.Document.InvokeScript("sayHello");


        String  v;
        System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt");
        foreach (HtmlElement k in webBrowser1.Document.GetElementsByTagName("html"))
        {
          v=  k.OuterHtml;
          file.WriteLine(v);
        }

        file.Close();

    }
    [ComVisible(true)]
    public class MyScript {
    //function called by the javascript    
    public void f1(string s)
    {
        System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test2.txt");
        file.WriteLine(s);
        file.Close();
    }
    }

実行の最後に、test と test2 の両方に同じ html があり、一部の要素が欠落しています。

4

1 に答える 1

0

質問はより具体的にする必要があります。問題が発生したコードはここを過ぎてください。ドキュメントの正しい部分にアクセスしていない可能性があります

于 2012-04-17T11:57:21.220 に答える