0

リンクを追加するという 1 つの機能だけを備えたカスタムの軽量リッチ テキスト エディターを作成しようとしています。私はいくつかの調査を行い、iframe が最良の選択であると判断しました。ちょっといじった後、1つの例外を除いて動作します.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 に答える