這是一個非常緊迫的問題,我會永遠感激任何能夠借鑑一些見解的人。Document.domain和<iframe> s打破Internet Explorer中的「返回」按鈕
我打算將一個窗口小部件(稱爲「ISM」)部署到第三方站點。該網站使用document.domain JavaScript屬性來緩解跨域限制(例如,將「a.example.com」和「b.example.com」中的document.domain設置爲「example.com」,以便它們可以訪問每個其他的DOM)。
由於我構建的<iframe>用於顯示我的窗口小部件的HTML內容的方式,這會導致Internet Explorer中的腳本出現問題。在Internet Explorer中,在頁面上使用document.domain,然後使用JavaScript創建<iframe>將導致您立即「鎖定」iframe > - 即,您可以創建它,但不會創建它正確的document.domain,所以你不能訪問它的DOM由於安全限制。這在任何其他瀏覽器中都不是問題。
要看看我說的,在IE瀏覽器加載這個頁面:
http://troy.onespot.com/static/3263/stage1.html
你應該看到一個JavaScript錯誤:「訪問被拒絕」。
爲了解決這個問題,我設置了動態創建的<iframe>的「src」屬性,以加載託管在同一個域(不同子域)中的靜態HTML文件,並將其document.domain屬性設置爲適當的值:
http://troy.onespot.com/static/3263/stage2.html
這會激發周圍的安全問題,並讓我寫我本來想寫的<IFRAME>文件:
http://troy.onespot.com/static/3263/stage3.html
使用該文檔時,我的窗口小部件會對我們的服務器進行一些輪詢,以獲取我想要插入另一個<iframe>的一些HTML內容,這將對父頁面的訪問者可見。我粗略地模擬了這裏(使用靜態內容,不實際接觸我們的服務器):
http://troy.onespot.com/static/3263/stage4.html
這裏談到的問題。當我得到該HTML內容並將其插入第二個<iframe>時,我現在遇到了一個不正常的問題,並顯示一個「返回」按鈕。這發生在Firefox 3.0和所有版本的IE瀏覽器(可能還有其他瀏覽器),儘管它在我測試過的一些瀏覽器(Firefox 3.5,Safari,Chrome)中不會發生。看到這個頁面:
http://troy.onespot.com/static/3263/stage5.html
如果點擊「谷歌」的鏈接,一切似乎罰款。但是,當返回到前一頁(具有後一個測試腳本)時,會引入另一個JavaScript錯誤:「權限被拒絕」。這不會終止腳本,並且似乎沒有任何不良影響,除了我認爲它已連接到已斷開的「後退」按鈕功能這一事實,這是一個非常大的問題 - 我正拼命嘗試解決。由於調用堆棧在jQuery腳本中啓動和停止,因此我無法調試此錯誤。
您也可以通過轉到上面的最後一個鏈接(stage5.html - 首先清除您的瀏覽器緩存)來遇到此錯誤 - 更嚴重的症狀。點擊「階段5(再次)」鏈接,然後,在該頁面加載後,點擊「返回」按鈕。
「返回」按鈕已完全損壞!你不能去除另一個URL以外的任何地方。
這是我需要儘快解決的問題。任何見解或幫助將非常感謝!
我不能偏離這個方法太多,所以絕對值得歡迎,但由於widget的規範限制,我可能無法使用它們。我更願意理解爲什麼「返回」按鈕被打破以及如何修復它,以及與jQuery相關的「權限被拒絕」錯誤。
http://stackoverflow.com/questions/1796619/how-to-access-the-content-of-an-iframe-with-jquery/1796672#1796672 – 2009-12-23 01:38:54