2011-05-08 94 views
0

下面是我用來改變IE中顯示的HTML的代碼。但它總是拋出異常 - 無法設置outerHTML屬性。此操作的目標元素無效。是不是可以設置outerHTML?是否可以爲HTMLDocument設置outerHTML?

protected void AlterContent(ref HTMLDocument docInput, HTMLDocument docAlteredOutPut) 
{ 
    try 
    { 
     if (docInput.body.tagName.ToLower() == "body" && docAlteredOutPut.body.innerHTML != null) 
     { 
      docInput.documentElement.outerHTML = docAlteredOutPut.documentElement.outerHTML; 
     } 
    } 
    catch 
    { 
    } 
} 

謝謝。

+0

我想你是在談論WebBrowser控制?或者是其他東西? – 2011-05-08 12:34:35

+0

是的,我正在談論WebBrowser控制。 – arunondeck 2011-05-08 13:06:29

回答

1

您不能替換<body>元素的html。沒有必要,這工作正常:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     webBrowser1.Url = new Uri("http://stackoverflow.com"); 
     webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted; 
    } 
    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { 
     var body = webBrowser1.Document.Body; 
     body.InnerHtml = "pwned"; 
    } 
} 
+1

我明白你所做的。但我需要替換整個html而不僅僅是body。這就是爲什麼試圖訪問OuterHTML – arunondeck 2011-05-08 13:08:11

+1

直接生成文檔,從服務器檢索它,然後不使用它是沒有意義的。分配WebBrowser.DocumentText屬性。 – 2011-05-08 13:16:28

+1

我明白了。但那也不是我需要做的。我在IE中使用了html頁面的源代碼,並對其進行了更改。 我用它 - WebBrowser資源管理器; HTMLDocument docInput =(HTMLDocument)Explorer.Document; 現在我對docInput進行了必要的更改之後,我還在標籤內進行了更改,我想用此標籤替換實際的文檔。有一種方法可以一氣呵成嗎? – arunondeck 2011-05-10 05:02:14

相關問題