2012-01-17 82 views
2

我使用WebBrowser控件構建了一個C#應用程序,並且我試圖找出一種方法來讓網頁中的Flash內容不顯示,因爲它是吸吮我的CPU和內存的一個。我一直試圖通過browser.Document.GetElementsByTagName(「object」)獲取它並將其outerHtml設置爲空字符串,從而在頁面中刪除<object>標記(只有一個)。它返回一個元素(由Count屬性確認),但訪問第一個元素([0])給出的索引超出範圍錯誤。我試過通過foreach循環來做,但沒有任何反應,也沒有任何錯誤。如果我嘗試檢索<div>元素而不是<object>元素,則會運行foreach循環。我在這裏做錯了什麼,有沒有錯誤,或者有更好的方法來刪除Flash內容?任何幫助不勝感激。如何在Web瀏覽器控件中阻止Flash元素

我的代碼:

​​

順便說一句,這是正在運行後DocumentCompleted事件已被解僱。

編輯:我剛纔發現,當DocumentCompleted事件被調用時,它在JavaScript將Flash內容注入頁面之前被調用。我嘗試了一些類似「睡眠」的方法,但它們都阻止了網頁的處理。任何方式等待更多的時間(5秒左右),而網頁繼續呈現?

+0

webBrowser.Document.All [「flashobjectID」]你可以試試這個..它是一樣的東西的getElementById您迴應,但 – 2012-01-17 05:54:28

+0

謝謝了''標籤有動態變化的ID,以便讓他們通過ID只爲一個工作頁面。 – petschekr 2012-01-17 15:20:39

回答

1

選項1: 你可以使用System.Threading.Timer嘗試和等待額外的時間動態注入的Flash。這不應阻止WebBrowser在您等待時運行。

選項2: 試着這麼做FiddlerCore(你將添加到您的應用程序),privoxy(這將在本地計算機上的應用程序外運行)或其他一些代理實際遮擋閃光燈(瑞士法郎)含量從不斷到你的本地機器。使用FiddlerCore,您可以監控每個Web請求/響應,並根據HTTP內容類型終止請求/響應。這個選項會導致代理網絡的CPU /內存命中,但仍然可能低於Flash使用本身。

+0

感謝您提供選項1.我使用了一種不同形式的計時器,它阻止停止瀏覽器繼續渲染的線程。 – petschekr 2012-01-28 15:30:21

0

爲什麼不在頁面上使用注入JavaScript來禁用在Flash存在之前寫入?我不知道該頁面使用的是什麼閃存庫,但重寫主要方法什麼也不做是很容易的。

例如

swfobject.embedSWF = function(){}