1

私はIE用に現在デバッグしているCMSアプリケーションを構築しています。しかし、理解できないことが起こります。

まず、ページのコンテンツを含む div があります。div のコンテンツを抽出し、javascript を使用して iFrame を作成し、それを div に追加します。これは、WYSIWYG エディターを作成するためのものです。次に、コンテンツを iFrame に追加しようとすると、問題が発生します。IE が何らかの理由で iFrame の本体にアクセスできません。[object Document] または [object HTMLDocument] を提供する iFrame のドキュメントにアラートを出すことができますが、ボディにアラートを出すと null が返されます。

この関数を使用して、ドキュメントを JavaScript オブジェクトの一部として取得します。

iframedoc: function(aID) {
    if (document.getElementById(aID).contentDocument){
        return document.getElementById(aID).contentDocument;
    } else {
        var iFrame = document.getElementById(aID);
        return iFrame.contentWindow.document;
    }
},

そして、これが私が初めて呼び出す場所です。

tas[i].innerHTML = "";
tas[i].appendChild(ta_edit_functions);
tas[i].appendChild(ta_edit);
tas[i].appendChild(ta_result);
alert(ta.iframedoc(ta_edit_id));
ta.iframedoc(ta_edit_id).body.innerHTML = ta_edit_content;
ta.iframedoc(ta_edit_id).designMode = 'on';

ここでは、div を空にし、WYSIWYG 関数、iFrame、および最終的にフォームを送信するためのテキストエリアを含む div を追加します。

私は IE 8 と 9 でテストしています。最も奇妙なことは、IE 8 で最初に iframedoc を呼び出す前にアラートを出すと、突然本文が表示されることです。

誰かが少なくとも私を正しい方向に向けることができれば、本当に感謝しています. 何が起こっているのか、まったくわかりません。

4

2 に答える 2

4

私は IE 8 と 9 でテストしています。最も奇妙なことは、IE 8 で iframedoc を最初に呼び出す前にアラートを出すと、突然本文が表示されることです。

ブラウザには速すぎるように聞こえます.iframeをいじろうとすると、おそらくまだ完全にロードされていないため、アラートを追加すると、必要な余分な時間が与えられます. onloadiframe 要素のイベントを使用して、コードの一部を延期してみてください。

于 2012-05-21T01:06:46.397 に答える
0

最終的に私の解決策は、iFrame の本体が利用可能かどうかをチェックする間隔関数を使用することでした。

しかし、これらのエラーがなくなったので、IE8 で iFrame のデザインモードをオンにすると、そのすべてのコンテンツが削除されたことがわかりました。だから私はコンテンツ編集可能なdivを使用することになりました..

于 2012-05-21T20:59:53.917 に答える