【问题标题】:Alter inline style TWebbrower Delphi改变内联样式 TWebbrower Delphi
【发布时间】:2014-05-21 16:37:19
【问题描述】:

我在 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 并将其替换为其他内容?

【问题讨论】:

  • 页面在IE中加载是否正常?

标签: html css delphi twebbrowser


【解决方案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,然后遍历它的子元素。

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 2020-07-09
    • 2016-11-19
    • 1970-01-01
    • 2018-07-01
    • 2018-11-10
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多