1
我有一個有趣的問題,我需要解決。簡而言之,Internet Explorer使用window.onblur事件將元素聚焦到iFrame中。因爲這是一個遞歸,你不能點擊iFrame之外的任何東西。 IE9,IE10,IE11(不是IE8及以下)出現問題。Internet Explorer Iframe遞歸window.onblur
測試在這裏:Try it (in IE)
在這裏下載:Download it
我真正的問題是: 有沒有辦法從外面的iFrame覆蓋iFrame中的window.onblur事件?這是一個錯誤,我應該向微軟報告這個地方嗎?
更新
感謝您的幫助@Jonathan桑普森,這種工作方式可以在這裏看到:
See working example - 你必須等待,直到IFrame的滿載能夠覆蓋它
感謝您的光臨。確實有效。但是你需要等到IFrame被加載或者它會被覆蓋。我希望有一種從IFrame之外做到這一點的好方法,但是這個問題是通過這個答案解決的。 – CodingYourLife
@CodingYourLife理想情況下,你應該改變* iframe中的代碼*,以便它綁定到'window.top',或者如果'window!== window.top'只是拒絕向'onblur'添加句柄。如果您需要從頂部窗口進行更改,您可以綁定到iframe的'DOMContentLoaded'或'Load'事件並在那裏運行您的代碼,從而避免使用'setTimeout'。 – Sampson
解決方法解決了我的具體問題。在我的情況下,我有一個標籤導航,改變了iFrame src(沒有其他方式)。我無法掛載加載事件(也無法訪問iFrame內容頁面),甚至嘗試每1秒重置一次onblur,但我甚至可以在調試器中看到onblur在該行後面沒有設置爲null。我所做的是在頁面上發佈了一個新的onblur事件,包括詢問用戶是否想離開當前標籤的iFrame。如果是,我將IFrame src設置爲about:blank,然後覆蓋onblur。 - >把它變成一個「功能」^^ – CodingYourLife