Javascript:iFrame中的事件

Ada*_*dam 2 javascript iframe events

我建立一个WYISWYG用编辑器iframe使用designMode = 'on'.

问题是我无法在Firefox和Opera中使用iframe上的任何事件(IE未经测试),例如我想跟踪onkeyup事件:

document.getElementById("myFrame").onkeyup = function(){
    doSomething...
}
Run Code Online (Sandbox Code Playgroud)

但是在父窗口中不起作用.

我用iframe尝试了iframe:

top.frames[0].onkeyup = function(){
        doSomething...
}
Run Code Online (Sandbox Code Playgroud)

和所有类似的东西:

top.document.frames[0].onkeyup
top.frames["myFrame"].onkeyup
top.frames[0].document.onkeyup
Run Code Online (Sandbox Code Playgroud)

但他们都没有想要工作,所以最后证明即使window.onclick不起作用,所以现在我有点困惑......

这是什么解决方案?

编辑

问题似乎与document.designMode = "on"iframe有关

Tim*_*own 8

我建议在iframe上捕获事件Document,而在Firefox中至少你需要使用addEventListener()而不是onkeyup.以下内容适用于所有主流浏览器:

var iframe = document.getElementById("myFrame");
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;

function handleIframeKeyUp(evt) {
    alert("Key up!");
}

if (typeof iframeDoc.addEventListener != "undefined") {
    iframeDoc.addEventListener("keyup", handleIframeKeyUp, false);
} else if (typeof iframeDoc.attachEvent != "undefined") {
    iframeDoc.attachEvent("onkeyup", handleIframeKeyUp);
}
Run Code Online (Sandbox Code Playgroud)