我在TWebbrowser中加载网页,但网页没有正确显示,我无法更改编码。
如何在页面加载后更改Delphi中的内联样式?
这是我试图改变的代码:
<td width="200px" valign=top style="background-color:#576299; height:800px;">
到此:
<td width="200px" valign=top style="display:none; background-color:#576299; height:800px;">
我首先想到我可以使用这种方法注入一个css样式表:CSS and TWebbrowser delphi但是没有要覆盖的类,我可以为所有表设置样式但是页面上有其他表格我想要展示。
是否有搜索html我正在寻找并用其他东西替换它?
答案 0 :(得分:1)
如果未预期呈现网页,则表示webbrowser控件不使用与MSIE使用的相同的呈现策略。要解决此问题,您可能需要使用FEATURE_BROWSER_EMULATION
(see 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的父级,然后浏览其子元素。