[VB.NET] 在WebBrowser中過濾特定的JavaScript(2013-05-23更新)

摘要:[VB.NET] 在WebBrowser中過濾特定的JavaScript

在操作WebBrowser的時候,常常有訊息視窗(alert)或是轉址(window.location)影響正常作業,為了解決這個問題,可以在Navigated 事件中進行攔截,修改HtmlElementOuterHtml 屬性,例如可以將整個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(){}"})

 

文章內容僅提供技術分享,如有錯誤還請不吝指教。