Firefox 在實施同源政策時遇到一個越來越令人沮喪的問題。
我正在開發一個支援觸控螢幕的整合系統,我們可以讓使用者選擇在螢幕上的多個位置的 iframe 中載入網頁。網頁可以是任何來自任何類型的網域和位置(Google、雅虎、內部網路頁面等)的網頁類型,這就是我的問題。
我需要能夠為 iframe 新增 onclick 事件,該事件為我提供 iframe 的 id(或其他一些唯一識別碼)作為回應。這告訴我 iframe 上正在進行活動(網頁瀏覽),並且 iframe 不應重新載入(頁面設定為固定的自動更新間隔,應在活動時中斷)。
我已經閱讀了谷歌返回給我的幾乎所有內容(但我希望在這件事上被證明是錯誤的),我發現這是最好的(在許多其他解決方案中):
<iframe src='http://google.com' id='iframe1' onload='netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite"); this.contentWindow.document.addEventListener("click", function(event) {alert(this.id);}, false)'></iframe>
這只是給我常規的許可被拒絕http://localhost從中取得屬性 Window.documenthttp://google.com
我知道為什麼我收到此錯誤訊息,我的問題很簡單。我該如何刪除它?
它是一個整合系統,我可以從原始碼編譯firefox,如果需要我可以編輯原始碼,我可以更改prefs.js等,但我需要使用firefox(我知道所有其他明智的網頁瀏覽器都有一個很好的命令列開關關閉它...)但是我們與 Firefox 平台有(相當)緊密的集成,很難刪除。
我們目前在 Debian Squeeze 平台上使用 Firefox v.3.5.16(我知道它已經停產,我們將在其他時間升級它)。如果需要,我可以升級到更新的 Firefox 版本,但從我發現的情況來看,情況似乎更糟。
長話短說 幫我關閉同源策略,在任何可能的方式在 Firefox 3.5.16 上,用於需要透過跨域 iframe 更改程式碼的整合平台。
答案1
我覺得自己挺傻的。
當你使用時它會起作用通用XP連接而不是 UniversalBrowserWrite。
例如:netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
另外,您還可以不是使用 this.id 或 this.parentNode.id,仍然會產生(不同的)存取錯誤。要解決這個問題,只需先將其儲存在臨時變數中:
onload='var tempstuff = this.id; this.contentWindow.document.addEventListener("click", function(event) {alert(tempstuff);}, false)'