【发布时间】:2013-09-08 17:54:31
【问题描述】:
我遇到了在 webbrowser 控件中阻止 iframe 的问题。目前我正在使用此代码:
foreach (HtmlElement x in ((WebBrowser)sender).Document.GetElementsByTagName("iframe"))
{
MessageBox.Show("iframe!"); //DEBUG
x.OuterHtml = @"<iframe src=""about:blank"" frameborder=""0"" style=""display:none;""></iframe>";
// x.OuterHtml = String.Empty; //gives the same result
}
它可以工作,但是当导航到 www.popuptest.com 时,应用程序会因为这段代码而完全冻结。它显示 2 个“iframe!”消息框并在关闭第二个后冻结。 我在网页的源代码中找到了 2 个 iframe(在该网站上显示的广告中)。这是导致它冻结的代码:
(a=document.createElement("IFRAME"),a.frameBorder=0,a.style.height=0,a.style.width=0,a.style.position="absolute",t=a,document.body&&(document.body.appendChild(a),a=t))&&(a=a.contentWindow)&&(r="1",a.document.open(),a.document.write("<!doctype html><html><head></head><body></body></html>"),a.document.close(),k(a.document))
我猜是因为框架是以不同的方式创建的?我在win7/IE10和winXP/IE6上都测试过,结果是一样的。然而,在 winXP 上,它崩溃并打开调试器而不是冻结,这就是我得到错误代码的原因。
是否有更好/更安全的删除 iframe 内容的方法?
【问题讨论】:
标签: c# winforms .net-2.0 webbrowser-control