c#使用Webbrowser如何禁止javascript脚本运行或过滤掉所有脚本?

winseer 2013-01-18 06:09:19
c#使用Webbrowser,打开一个网页,程序自动点击里面的一个提交按钮后,转到的新网页里有如下类似javascript代码


<script type='text/javascript'>
alert('登录成功,欢迎回来。');
window.opener.location.reload();
window.close();
………………
</script>



我不想让它弹出对话框,或者说我想让所有javascript脚本都不执行,因为它会影响程序的后续运行,所以从网找到了下面这段代码。但这段代码只能限制指定的这几种脚本代码,但如上面的window.opener.location.reload()这句,无论如何修改过滤代码,都无法被禁止。



//禁止弹出js对话框
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
IHTMLWindow2 win = (IHTMLWindow2)webBrowser1.Document.Window.DomWindow;
string s = "window.alert = null;\r\nwindow.confirm = null;\r\nwindow.open = null;\r\nwindow.showModalDialog = null;\r\nwindow.close = null;"; //取消对话框
win.execScript(s, "javascript");

}




不知该怎么办了,请各位帮忙指点一下吧。
最好是能够禁止所有javascript脚本的执行,或者直接把html里的所有javascript代码全都清掉再执行的方法。
请大家指点!
...全文
1284 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
不错灬不错 2014-08-09
  • 打赏
  • 举报
回复
我勒个去。。。竟然一年半了这帖子
不错灬不错 2014-08-09
  • 打赏
  • 举报
回复
webBrowser1.ScriptErrorsSuppressed = true;
好像可以
WM_JAWIN 2013-08-21
  • 打赏
  • 举报
回复 1
可以脱开webbowse ,在 Navigated事件,查检到请求XX页面时,中止他请求。把相当数据取出来(如POST数据,COOKIE),然后用webrquest去模似他
williamxia8 2013-08-20
  • 打赏
  • 举报
回复
<A id=binBtn_btn title="" class=bt href="" target=_self _sp="p2047675.l1356" jQuery1708732681453261074="35">Buy It Now</A> 这块是动态的, jQuery1708732681453261074="35",该如何是好呢
williamxia8 2013-08-20
  • 打赏
  • 举报
回复
遇到了一个问题, <span id="binBtn_btn_parent" class="vib s bl vibs1" > <a _sp='p2047675.l1356' style="" id="binBtn_btn" class="bt" title="" href="" > Buy It Now</a> </span> 这样的标签不知道怎么样才能点击成功啊
winseer 2013-07-13
  • 打赏
  • 举报
回复
WebBrowser用处还是比较多的, 期待高人解决此问题。
Johan. 2013-07-04
  • 打赏
  • 举报
回复
看来怎么多年了,WebBrowser 还是这么的不起眼。 依然没多少人研究。
hefei0603 2013-04-26
  • 打赏
  • 举报
回复
webBrowser1有个Stop方法,看其描述应该是你想要的功能。但我不知道你为啥想要把js都停掉。。。。。 停掉的话页面会不正常吧。你可以判断下,你指定的页面才调用这个方法吧。
俺老刘 2013-04-26
  • 打赏
  • 举报
回复
我想要实现的功能是过滤掉js标签,或者其他标签
俺老刘 2013-04-26
  • 打赏
  • 举报
回复
请问楼主这个问题解决了没有啊,我也正为这个事烦恼呢,研究了两天没搞定。 我的qq 7963434,如果解决了麻烦发一份到我的一·QQ邮箱好吗。
winseer 2013-01-21
  • 打赏
  • 举报
回复
有了一个新想法,在webBrowser1_Navigated里获取网页反馈结果,查找html里只要包含“登录成功”,就说明已经成功了,此时,让webBrowser1不要再继续执行javascript脚本,一切就OK了。

//想办法停止执行
 private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
           //获取文档编码 
                Encoding encoding = Encoding.GetEncoding(webBrowser.Document.Encoding);
                //获取全部html内容,无任何截取
                StreamReader stream = new StreamReader(webBrowser.DocumentStream, encoding);
                string htmlMessage = stream.ReadToEnd();
                if (htmlMessage.IndexOf("登录成功")>-1)
                    {
                     //已经知道结果,浏览器终止执行javascript脚本。我想这样就不会弹出各种对话框了。
                     //可是,该如何让浏览器终止执行呢?
                     //程序不能自动退出,因为过会儿,还需要自动再刷新webBrowser1并登录。
                     //……
                     }

 
        }
但经过尝试,无法让webBrowser1停下来,度娘已经帮不了了,请问各位,该怎么办? 或者有其它思路也行啊。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧