我编写了对话框,当单击外部(无覆盖/背景)时它会关闭。
它工作得很好除非有一个 iframe,在这种情况下我的外部点击监听器永远不会被调用。
这里是a JSBIN来说明问题。 (http://jsbin.com/vuneyopedu/edit?js,console,output)
在下面的截图中简单解释一下:
- 点击红色对话框增量。
- 点击外部对话框(黄色和绿色)应该递减,但只有黄色有效。
- 点击
iframe
(绿色)时,外部点击的事件监听器永远不会被调用
问题是 - 如何让点击红色方 block 之外的任何内容(特别是点击 iframe)来减少数字。 (或者在“真实”世界中关闭对话框)
最佳答案
如何将事件绑定(bind)到 iframe 的文档。
iframes = document.getElementsByTagName('iframe');
iframesArray = Array.prototype.slice.apply(iframes);
iframesArray.forEach(function(frame) {
frame.contentWindow.document.addEventListener('click', function() {
inc();
}, true);
});
关于javascript - 如果点击目标是 iframe,则检测 div 外部的点击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34999344/