2014-05-21 67 views
2

我在TWebbrowser中加載網頁,但網頁顯示不正確,我無法更改編碼。更改內聯樣式TWebbrower Delphi

如何在頁面加載後在Delphi中更改內聯樣式?

這是我試圖改變代碼:我剛開始我以爲我可以使用這種方法只是注入CSS樣式表

<td width="200px" valign=top style="display:none; background-color:#576299; height:800px;"> 

<td width="200px" valign=top style="background-color:#576299; height:800px;"> 

這個CSS and TWebbrowser delphi但沒有課程可以重寫,我可以爲所有表格設置樣式,但我想在其中顯示其他表格。

是否有無論如何搜索我正在尋找的HTML並將其替換爲其他東西?

+0

頁面在IE中加載時是否正常工作? – whosrdaddy

回答

1

如果網頁未預期呈現,則表示webbrowser控件不使用與MSIE使用的相同呈現策略。爲了解決這個問題,你可能需要使用FEATURE_BROWSER_EMULATIONsee this post

如果你想改變DOM,有幾種方法可以存檔:

路1:使用魔法oleobject。 頁面加載成功後,您可以撥打WebBrowser1.oleobject.getElementById('foo').style := 'new_style';

方式2:使用MSHTML_TLB.pas中的接口。演示代碼如下。

var 
    D2Ptr: IHTMLDocument2; 
    ElemPtr: IHTMLElement; 
begin 
    if Supports(WebBrowser1.Document, IHTMLDocument2, D2Ptr) then 
    begin 
    ElemPtr := D2Ptr.getElementById('foo'); // If the td has an id, you can use this method. 
    if ElemPtr <> nil then 
     try 
     ElemPtr.style := ElemPtr.style + '; display:none'; 
     except 
     end; 
    end; 
end; 

請注意,如果您正在查找的元素沒有ID。你可能首先找到它的父母,他有一個ID,然後通過它的子元素。