Javascript Internet Explorer Iframe递归窗口.onblur

Javascript Internet Explorer Iframe递归窗口.onblur,javascript,internet-explorer,iframe,recursion,onblur,Javascript,Internet Explorer,Iframe,Recursion,Onblur,我有一个有趣的问题需要解决。简而言之,Internet Explorer使用window.onblur事件聚焦iFrame中的元素。因此,它是一个递归,您不能单击iFrame之外的任何内容。问题发生在IE9、IE10、IE11,而不是IE8及以下版本 在这里测试它: 请在此处下载: 我真正的问题是: 是否有方法从iFrame外部覆盖iFrame内部的window.onblur事件?这是一个Bug吗?我应该在什么地方向微软报告吗 更新 感谢您的帮助@Jonathan Sampson,这里可以看到这

我有一个有趣的问题需要解决。简而言之,Internet Explorer使用window.onblur事件聚焦iFrame中的元素。因此,它是一个递归,您不能单击iFrame之外的任何内容。问题发生在IE9、IE10、IE11,而不是IE8及以下版本

在这里测试它:

请在此处下载:

我真正的问题是: 是否有方法从iFrame外部覆盖iFrame内部的window.onblur事件?这是一个Bug吗?我应该在什么地方向微软报告吗

更新

感谢您的帮助@Jonathan Sampson,这里可以看到这一点:


-您必须等到IFrame完全加载后才能覆盖它

我在Internet Explorer团队工作,很乐意为您调查此事。为了回答您关于在iframe中覆盖onblur处理程序的问题,如果这两个文档共享一个公共域,那么这是可能的。在你的例子中,情况就是这样

document.querySelector iframe.contentWindow.onblur=null;
或者,您可能只想使用window.top绑定到最高的窗口。

谢谢您的查看。这确实有效。但是您需要等待IFrame加载,否则它将被覆盖。我希望在IFrame之外有一个很好的方法来实现这一点,但这个问题已经用这个答案解决了。@CodingYourLife理想情况下,您应该更改IFrame中的代码,使其绑定到window.top,或者干脆拒绝在window!==窗口,顶部。如果需要从顶部窗口进行更改,可以绑定到iframe的DOMContentLoaded或Load事件,并在那里运行代码,避免任何setTimeout的需要。通过解决方法解决了我的特定问题。在我的例子中,我有一个选项卡式导航,它改变了iFrame src,没有其他方法。我无法钩住加载事件,也无法访问iFrame内容页,甚至尝试每隔1秒重置onblur,但我甚至可以在调试器中看到onblur在该行之后没有设置为null。我在页面上做了一个新的onblur事件,包括询问用户是否要离开当前选项卡的iFrame。如果是,我将IFrame src设置为大约:空白,然后覆盖onblur。->把它变成一个功能^^