VB.NET WebBrowser禁用javascript

时间:2010-11-12 11:18:26

标签: vb.net webbrowser-control

有没有办法在vb.net中禁用javascript webbrowser?

4 个答案:

答案 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对话框弹出消息,那么您真的不需要这样做。

请告诉我你的进展情况,以及我是否可以继续提供帮助。