【问题标题】:How to edit html (tags), before being executed by CppWebBrowser如何在被 CppWebBrowser 执行之前编辑 html(标签)
【发布时间】:2011-11-27 22:32:04
【问题描述】:

我无法解决我的问题,我希望有人知道如何...

我的表单 TCppWebBrowser 上有一个组件,当我导航到 URL 时,在下载文档后,在方法 OnDocumentComplete() 中,我正在尝试检查和更改加载文档的 html 源...在它之前由浏览器执行。

我需要那个,因为有些网站有背景声音,我想解析 html 并删除标签或只是删除包含声音文件的文本,如 *.wav 、 *.mid 、 *.swf 、 *.mp3 ...等等。

例如,如果 html 源代码有这一行:

<NOEMBED><BGSOUND src="/images/ImagineCut.wav"></NOEMBED>

然后,我将其更改为:

<NOEMBED><BGSOUND src="/images/ImagineCut."></NOEMBED>

或者我可以删除整个标签。

使用这种方式,我想使网络浏览器静音,甚至停止播放声音。请考虑这种方法,因为它可以帮助我在编辑html后避免各种声音..(在浏览器执行之前)

这就是我试图做的:

void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender,
      LPDISPATCH pDisp, Variant *URL)
{

IHTMLDocument2 *pHTMLDoc;
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&pHTMLDoc);
IHTMLElement *pElem;
pHTMLDoc->get_body(&pElem);
BSTR text;
pElem->get_innerHTML(&text);
text = Cleaning(text); //checking and changing html without souds
pElem->put_innerHTML(text);
pElem->Release();
pHTMLDoc->Release();

}

【问题讨论】:

  • DLCTL_BGSOUNDS 有什么问题?
  • 问题是网站有很多方法可以附加背景音,但是DLCTL_BGSOUNDS对于各种背景音都没有解决成功。这个方法我已经试过了,可以说不好,最好在浏览器执行之前自己清理html代码,这样可以去掉声音扩展,浏览器就不能播放了。

标签: webbrowser-control c++builder


【解决方案1】:

要执行您的要求,您必须自己从 TCppWebBrowser 组件外部完全下载 HTML 文件,根据需要更改 HTML,然后使用其 IPersist... 接口之一将新 HTML 推送到 TCppWebBrowser . Borland/CodeGear/Embarcadero 论坛之前已经多次发布过这样做的示例。

【讨论】:

  • 哇..我这么快就收到了答复,谢谢! :)
  • 我可以使用 GET() 方法使用 TNMHTTP 或 TIdHTTP 下载 HTML,我什至可以使用 CppWebBrowser 导航两次,并使用上面发布的代码获取 HTML 代码,但问题是我无法成功推送它到网络浏览器。我以前从未使用过 IPersist 接口,如果您有示例,请在此处发布,或提供工作链接。我将尝试从 MSDN 阅读它。无论如何感谢您的回复!
  • 正如我所说,已经有很多使用 Web 浏览器的 IPersist 接口将 HTML 推送到浏览器中的示例。在deja.comforums.embarcadero.com 搜索档案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多