摘要:[VB.NET] 在WebBrowser中過濾特定的JavaScript
在操作WebBrowser的時候,常常有訊息視窗(alert)或是轉址(window.location)影響正常作業,為了解決這個問題,可以在Navigated 事件中進行攔截,修改HtmlElement的OuterHtml 屬性,例如可以將整個Script都清掉,或是將特定的Script清掉。
Private Sub WebBrowser1_Navigated(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated
WebBrowser1.Document.GetElementsByTagName("script")(0).OuterHtml = ""
End Sub
2013-05-23更新:
最近在寫網頁機器人的時候,又遇到同樣的問題,不過問題比較棘手,在這邊補充一下幾個方法:
同上面的方法,把Script的內容清空
script.SetAttribute("text", "")
DOM的刪除方法(須把mshtml加入參考)
Dim node As mshtml.IHTMLDOMNode
node = DirectCast(script.DomElement, mshtml.IHTMLDOMNode)
node.removeNode(True)
以上兩個方法都可以在Navigated 事件中執行,其中script是指要過濾的script element。
下面這個方法則是建議在DocumentCompleted 事件中執行,目的是override原本的function,使其無法正常運作
WebBrowser1.Document.InvokeScript("eval", {"myFunction = function(){}"})
文章內容僅提供技術分享,如有錯誤還請不吝指教。