我有用C#寫的網頁抓取appliaction,使用WebBrowser
。IE9搞砸了我的應用程序
它的一個特點是它可以讓用戶編寫一個在網頁中被注入和調用的javascript函數。這是一個用戶自定義的函數,它接收一個C#對象作爲參數,其中包含一個名爲UserData
的屬性,用戶可以使用它來存儲他想要的任何內容,並且即使在瀏覽器導航到另一個頁面後,它也會保留在那裏。它還包含一個Browser
對象,我將在此僅以此爲例。
如果我注射,並呼籲我已經安裝了IE8在下列功能:
function ToBeInjected(Global)
{
function Data()
{
this.csObject = Global.Browser;
this.jsObject = "hi";
}
Global.UserData = new Data();
}
然後導航到另一個頁面,並注入和調用此函數:
function ToBeInjected(Global)
{
alert(Global.UserData.jsObject); // works ok on IE8 and IE9 (shows "hi")
alert(Global.UserData.csObject); // works on IE8 (show the object's type) but not IE9 ("Permission Denied" error)
}
第二alert
不能正常工作,並顯示我的Browser
對象的類型(此處傳遞的Global
對象與前一個函數是同一個對象)。
我知道瀏覽器導航後對象存在似乎很奇怪,但它確實存在,並且它始終如此,並且從來沒有出現過問題,我的應用程序將此用作特徵。
但現在我剛剛安裝IE9和,物體仍然停留,但在這種特殊情況下在其上UserData
是包含指針(或不過你會稱呼它)到外部C#中的JavaScript對象(Data
對象)對象(Browser
對象),我得到了「權限被拒絕」的JavaScript錯誤。 (如果我不在同一頁面中導航和運行這兩個腳本,它在兩個IE版本上都可以正常工作。)
我知道我的示例沒用,但它只是一個示例。在其他情況下,有一個JavaScript對象包含指向外部C#對象的對象是很有用的。
所以,即使這是一個超級特定的問題,你有任何建議我可以做些什麼來解決它或爲什麼我有這個問題與IE9?
Javascript能夠解決系統中「瀏覽器外部」的問題是一個可怕的概念。瀏覽器安全系統中的任何漏洞,即使得到充分保護,都會被利用。 – 2011-04-13 03:52:44
無論如何,瀏覽器安全系統中的任何漏洞總會被利用。儘管如此,我認爲這對我的情況不會有任何問題。 – Juan 2011-04-13 03:57:41
這不是一個安全問題,因爲瀏覽器只能訪問你放在那裏的東西。 – Gabe 2011-04-13 04:05:59