我正在尝试使用一个功能 - 添加链接来制作自定义轻量级富文本编辑器。我做了一些研究,并决定iframe是最好的选择。在一些乱七八糟的情况下,它有一个例外 - 我需要在keyup事件上运行一些代码。我阅读了我在互联网上找到的所有内容,没有任何帮助,仍然无效...
iframe.document.designMode = 'On';
iframe.document.open();
iframe.document.write(someHTML);
iframe.document.close();
var keyupHandle = function() { /* some code */ };
var iframeDoc = document.getElementById('iframe').contentWindow.document;
if(iframeDoc.addEventListener) {
iframeDoc.addEventListener('keyup', keyupHandle(), true);
} else {
iframeDoc.attachEvent('onkeyup', keyupHandle());
}
答案 0 :(得分:0)
我想我记得在将事件处理程序添加到文档之前需要等待iframe完全加载。如果可能的话,在iframe的HTML中添加一些内容,以便在加载时调用父页面:
window.iframeLoaded = function() {
var iframeDoc = document.getElementById('iframe').contentWindow.document;
if(iframeDoc.addEventListener) {
iframeDoc.addEventListener('keyup', keyupHandle(), true);
} else {
iframeDoc.attachEvent('onkeyup', keyupHandle());
}
};
iframe.document.designMode = 'on';
iframe.document.open();
iframe.document.write('<html><body onload="parent.iframeLoaded()">Stuff</body></html>');
iframe.document.close();
如果失败,使用window.setTimeout()
设置一个简短的计时器可能会有效。