2015-01-17 25 views
11

A在我的Win32 C++應用程序(不包括MFC,ATL等)的對話框中嵌入了一個Web瀏覽器,我最初從包含一些HTML代碼的字符串中設置文檔的內容。該HTML呈現正確。當「文檔完成」事件發生時,我操縱DOM,例如通過將文本節點附加到BODY元素。DOM更改後爲什麼不刷新IWebBrowser2?

問題是,雖然在BODY元素的界面上調用IHTMLElement::get_outerHTML指示文本節點存在,但瀏覽器內容在對話框中顯示爲未更改。

我已經嘗試呼叫IWebBrowser2::Refresh::InvalidateRect/::UpdateWindow,但都沒有幫助。

任何想法?如果需要,我可以發佈部分代碼。

而且,沒有人知道

  • 是否在原則上,刷新需要修改DOM後以某種方式觸發(或它應該是自動)IWebBrowser2::Refresh
  • 是否有意義時,HTML文檔是從一個字符串加載,而不是一個URL

仍然希望對這個答案...任何人?

+0

刷新應該是自動的。您是否在STA線程中工作,並且在抽取Windows消息? http://stackoverflow.com/questions/2222365/what-is-a-message-pump –

回答

-2

我發現問題 - 這是我的代碼中的一個錯誤。在重新加載頁面的代碼中,對IWebBrowser2 :: Refresh進行了非常模糊的調用,因此還原了對DOM的動態更改。

0

你應該使用一個靜態的內容如

<html> 
<head></head> 
<body> 
Hello World 
<script> 
alert("a"); 
</script> 
</body> 
</html> 

如果顯示的警告框,但沒有任何測試,這標誌你FPGA實現有問題。

相關問題