我想知道是否仍然可以删除WebBrowser消息
确定要离开此页面
当我尝试浏览另一个URL时,它会发生。
我尝试过这种方法
e.Cancel = False
WebBrowser1.Dispose()
WebBrowser1 = New WebBrowser
WebBrowser1.ScriptErrorsSuppressed = True
WebBrowser1.Navigate(New Uri("https://www.google.com"))
答案 0 :(得分:0)
该代码已编码到网站中,因此您必须在页面中注入一些Javascript才能覆盖提示。
但是请小心。这需要覆盖整个window.onbeforeunload
event handler,并且某些页面可能已经决定要做更多的工作,而不仅仅是显示提示(也许保存数据或类似内容)。
首先要添加对mshtml
的引用,这是必需的,以便能够设置脚本元素的内容(贷方为Atanas Korchev):
在Solution Explorer
中右键单击您的项目,然后按Add Reference...
。
选择Browse
标签,然后导航至C:\Windows\System32
选择mshtml.tlb
并按OK。
在Solution Explorer
中,展开References
节点。如果您无法展开它或它不存在,请按Show All Files
顶部的Solution Explorer
按钮。
选择mshtml
引用,转到Property Window
并确保将Embed Interop Types
设置为True
。
现在您可以使用以下代码:
Private Sub RemoveOnBeforeUnloadPrompt()
If WebBrowser1.Document IsNot Nothing AndAlso WebBrowser1.Document.Body IsNot Nothing Then
'Create a <script> tag.
Dim ScriptElement As HtmlElement = WebBrowser1.Document.CreateElement("script")
ScriptElement.SetAttribute("type", "text/javascript")
'Insert code to override the window.onbeforeunload event handler.
CType(ScriptElement.DomElement, mshtml.IHTMLScriptElement).text = "function __removeOnBeforeUnload() { window.onbeforeunload = function() {}; }"
'Append script to the web page.
WebBrowser1.Document.Body.AppendChild(ScriptElement)
'Run the script.
WebBrowser1.Document.InvokeScript("__removeOnBeforeUnload")
End If
End Sub
然后,之前,您导航到一个新的页面调用:
RemoveOnBeforeUnloadPrompt()