Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有什么办法可以得到;“全球”;使用嵌套iFrame时发生的事件?_Javascript_Jquery - Fatal编程技术网

Javascript 有什么办法可以得到;“全球”;使用嵌套iFrame时发生的事件?

Javascript 有什么办法可以得到;“全球”;使用嵌套iFrame时发生的事件?,javascript,jquery,Javascript,Jquery,我的问题是我需要捕获一个按键,但在任何给定的时间,用户都可以在一个iframe内一个iframe内一个iframe内一个iframe内一个iframe内 起初,我认为我可以将侦听器放在文档中,但如果用户在其中一个iframe中,这就行不通了 接下来,我考虑将处理程序附加到窗口,但ie不支持将事件处理程序附加到窗口。我甚至不确定这是否会起作用,或者这将是与文档相同的问题 接下来,我想我可以遍历所有的iframe并在其中添加单独的处理程序,但最终意识到这是行不通的,因为iframe在dom中没有任何

我的问题是我需要捕获一个按键,但在任何给定的时间,用户都可以在一个iframe内一个iframe内一个iframe内一个iframe内一个iframe内

起初,我认为我可以将侦听器放在文档中,但如果用户在其中一个iframe中,这就行不通了

接下来,我考虑将处理程序附加到窗口,但ie不支持将事件处理程序附加到窗口。我甚至不确定这是否会起作用,或者这将是与文档相同的问题

接下来,我想我可以遍历所有的iframe并在其中添加单独的处理程序,但最终意识到这是行不通的,因为iframe在dom中没有任何html,因此无法访问嵌套在其中的iframe

另一个可能的解决方案是转到所有iFrame的js并手动添加此代码,但这太极端了


还有其他想法吗?

我一直在回答我自己的问题,但哦,好吧。如果你遇到这个问题,我就想出了答案。这使用jquery,但如果必须,您可以将其移植到straight js

var myFunction = function () {
            alert("hello world");
        };
        var $myWindow = $(myWindow /*dom object*/);
        $myWindow.bind("mouseover", myFunction);
        var getNested_iframes = function (document_element) {
            $.each(document_element.find("iframe"), function () {
                var iframeDocument = $(this).get(0).contentWindow.document; // may need to change this depending on browser
                iframeDocument.onkeyup = myFunction;
                getNested_iframes($(iframeDocument));
            });
        }
        getNested_iframes($myWindow);

我认为要做的第一件事是避免使用一些iframe;)第二件事:这可能会帮助您也许您可以使用window.frames[].document对象并为所有这些文档绑定事件我找到了答案!但它不会让我张贴它,直到8小时后,我创建了帖子。我稍后会回来发布。正如@MCSI所说的,我强烈建议你远离iframes。它们很快就要灭绝了!但是,我同意在某些情况下(例如,实时上传框架),它们会非常有用。不管怎样,在回答您的问题时,您说您已经排序了,请看一看并输入$('selector',window.parent.document)。