2012-04-17 119 views
0

我在我的程序中使用webbrowser控件,但是當瀏覽到一個網站後,我嘗試使用webbrowser的文檔(如getelementbyid ...)來獲取一些元素,我注意到某些元素缺失。Webbrowser控件文檔似乎不完整

我知道元素是通過一些JavaScript動態插入到頁面中的。

我搜索的方法來獲取這些元素,我試圖讓他們注入一個JavaScript在頁面中執行,並通過window.external方法返回一些元素(或者只是爲了通過alert來嘗試),但即使這個腳本被執行他們只是返回與原始代碼中文檔中的方法相同的結果。

有一種方法可以在我的程序中以某種方式訪問​​此「隱形」元素,就像我通過在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(); 
    } 
    } 

在執行這兩個測試結束和TEST2具有相同的HTML是一些元素缺失。

回答

0

你應該在你的問題中更具體一些,並在這裏通過代碼來解決問題。也許你沒有訪問文檔的正確部分