日期:2014-05-17  浏览次数:20926 次

如何用Webbrowser控件让下面的js代码不弹出IE窗口
如何用Webbrowser控件让下面的js代码不弹出IE窗口而是在本Webbrowser控件内弹出新的标签

<script type="text/javascript">
function object_pop(url){var object=document.createElement('object');object.setAttribute('classid','CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6');object.style.cssText='position:absolute;left:1px;top:1px;width:1px;height:1px;';append(object);object.launchURL(url)}

function append(e){for(var t in{body:1}){var ele=document.getElementsByTagName(t);for(var i=0;i<ele.length;i++){ele[i].insertBefore(e,ele[i].firstChild);return}}}

object_pop("http://www.xamq.com");

</script>

http://www.xamq.com/tan.htm这个页面里的源代码跟上面一样,没有网站的可用这个页面测试。。

别的弹窗基本都搞定了,就差这一种了,哥哥兄弟,有弄过的帮忙提示提示,给点代码。。

------解决方案--------------------
帮顶。
lz解决了后可否在这个帖子做个屏蔽弹出窗口的方法总结,经常会有人问到webbroswer控件屏蔽弹出框的问题
------解决方案--------------------
我看这个需要用过滤网页源码的方式来实现。用正则写还是相对容易的。
网页源码过滤最佳方法是采用IE异步协议。IE异步协议又分两种:
命名空间协议和MIME协议。过滤源码最好是采用MIME协议。遗憾的是,经我无数资测试,.net下MIME协议运行过程中总是无法避免偶发的、无法调试的win32异常。
命名空间协议倒是可稳定使用。不过与其使用命名空间协议,还不如自己来个更简单的:

访问某网站前先下载该网站源码,并进行过滤,将过滤后源码载入webbrowser.
------解决方案--------------------
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
e.Cancel = true;
Uri uri = new Uri(((WebBrowser)sender).StatusText);
this.webBrowser1.Url = uri; 
}
这个事件可以解决