有没有办法在vb.net中禁用javascript webbrowser?
答案 0 :(得分:1)
适合我:
Private Function TrimScript(ByVal htmlDocText As String) As String
While htmlDocText.ToLower().IndexOf("<script type=""text/javascript"">") > -1
Dim s_index As Integer = htmlDocText.ToLower().IndexOf("<script type=""text/javascript"">")
Dim e_index As Integer = htmlDocText.ToLower().IndexOf("</script>")
htmlDocText = htmlDocText.Remove(s_index, e_index - s_index)
End While
Return htmlDocText
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim webClient As New System.Net.WebClient
Dim result As String = webClient.DownloadString(yourUrl)
Dim wb As New WebBrowser
wb.Navigate("")
Do While wb.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
Loop
Dim script As String = TrimScript(result)
wb.DocumentText = script
End Sub
答案 1 :(得分:0)
简短的回答是:否。
稍长的答案是:不,网络浏览器控件API不允许禁用标准浏览器功能。
答案 2 :(得分:0)
不是真的...但是如果你收到弹出的脚本正在运行的那个恼人的错误消息,那么你可以将webbrowser的属性设为suppress-errors“true”
答案 3 :(得分:0)
您要禁用哪条弹出式消息?如果它是警告消息,请尝试这一点,显然根据您的特定需求解析窗口或框架对象,我只假设顶级文档,但如果您需要iframe,则可以使用window.frames(0)访问它。对于第一帧等等...(重新编写JavaScript部分)...这里有一些代码,假设WB是你的webbrowser控件......
WB.Document.parentWindow.execScript“window.alert = function(){};”,“JScript”
只有在整个页面加载完毕后才能运行上面的代码,我知道这很难做到(并且还没有发布完整的版本)但是我一直这样做(完全证明)现在已经有一段时间了,如果您阅读我以前的一些标记为“webbrowser”和“webbrowser-control”的答案,您可以收集有关如何准确执行此操作的提示,但如果您想要取消,请回到手头的问题.confirm JavaScript消息,只需用window.confirm替换window.alert(当然,使用正确的对象限定窗口。对象以到达您正在使用的文档层次结构)。您也可以使用上述技术和新的IE9 .prompt方法禁用.print方法。
如果要完全禁用JavaScript,可以使用注册表执行此操作,并且必须在webbrowser控件加载到内存之前更改注册表,并且每次更改它(on&amp; off)时必须重新加载webbrowser控制进入内存(或只是重启你的应用程序)。
注册表项为\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\
- 键名为1400
,禁用它的值为3,启用它为0。
当然,因为Zones键下有5个区域,您需要为活动区域或所有区域更改它以确保。但是,如果您只想执行si supress js对话框弹出消息,那么您真的不需要这样做。
请告诉我你的进展情况,以及我是否可以继续提供帮助。