我正在构建一个WYISWYG
编辑器,其中iframe
位于designMode = 'on'
。
问题是我无法在Firefox和Opera中使用iframe上的任何事件(IE未经测试),例如我想跟踪onkeyup事件:
document.getElementById("myFrame").onkeyup = function(){
doSomething...
}
但在父窗口中不起作用。
我也尝试了iframe:
top.frames[0].onkeyup = function(){
doSomething...
}
和所有类似的东西:
top.document.frames[0].onkeyup
top.frames["myFrame"].onkeyup
top.frames[0].document.onkeyup
但他们都不想工作,所以最后证明即使window.onclick
不起作用,所以现在我有点困惑......
这是什么解决方案?
修改
问题似乎出现在iframe中的document.designMode = "on"
答案 0 :(得分: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);
}