改变内联风格TWebbrower Delphi

时间:2014-05-21 16:37:20

标签: html css delphi twebbrowser

我在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我正在寻找并用其他东西替换它?

1 个答案:

答案 0 :(得分: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的父级,然后浏览其子元素。