0

我正在尝试制作仅具有一项功能的自定义轻量级富文本编辑器-添加链接。我做了一些研究,决定 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());
}
4

1 回答 1

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()可能会起作用。

于 2013-09-15T23:29:15.903 回答