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有关
我建议在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)