gpt4 book ai didi

c# - 如何在网页浏览器控件中屏蔽 flash 元素

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:38 24 4
gpt4 key购买 nike

我构建了一个带有 WebBrowser 控件的 C# 应用程序,并且我正在尝试找出一种方法让网页中的 Flash 内容不显示,因为它吸收了 ton我的 CPU 和内存。我一直在尝试删除 <object>通过 browser.Document.GetElementsByTagName("object") 获取页面内的标签(只有一个)并将其 outerHtml 设置为空字符串。它返回一个元素(由 Count 属性确认)但访问第一个元素 ([0]) 会给出索引超出范围错误。我试过通过 foreach 循环来做,但什么也没有发生,也没有错误。如果我尝试检索 <div>元素而不是 <object>元素,foreach 循环运行。我在这里做错了什么,有错误,还是有更好的方法来删除 Flash 内容?非常感谢任何帮助。

我的代码:

HtmlElementCollection flashElements = webBrowser.Document.GetElementsByTagName("object");
foreach (HtmlElement element in flashElements)
{
element.OuterHtml = "";
MessageBox.Show("Deleted");
}

顺便说一下,它在 DocumentCompleted 事件被触发后运行。

编辑: 我刚刚发现,在调用 DocumentCompleted 事件时,它是在 JavaScript 将 Flash 内容注入(inject)页面之前调用的。我尝试了一些类似“ sleep ”的方法,但它们也都阻止了网页的处理。有什么方法可以在网页继续呈现时等待更多时间(5 秒左右)?

最佳答案

选项 1:您可以使用 System.Threading.Timer 尝试为动态注入(inject)的 Flash 等待额外的时间。这不应该阻止 WebBrowser 在您等待时运行。

选项 2:尝试像 FiddlerCore 这样的东西(您会将其添加到您的应用程序中),privoxy (这将在您的本地计算机上的应用程序之外运行)或其他一些代理来实际阻止 Flash (.swf) 内容到达您的本地计算机。例如,使用 FiddlerCore,您可以监视每个 Web 请求/响应并根据 HTTP 内容类型终止请求/响应。此选项会导致代理网络的 CPU/内存命中,但仍然可能少于 Flash 使用自身。

关于c# - 如何在网页浏览器控件中屏蔽 flash 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8890073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com