そのため、ajax を介して一部の html を取得し、それを を使用してページに挿入すると.html(parseHtml(result,true));
、結果内の JavaScript が doc.ready に関係なく実行されるようです。
これは、親ページ自体が既に「準備完了」であり、parseHtml を介してページに挿入される HTML フラグメント + スクリプトの準備完了イベントの概念/実装がないためだと推測しています。
私はこれをそのようにテストしました。通常、出力は 1、3、2 であると予想されます。これは、doc の準備完了が最後に発生するためですが、得られる出力は 1、2、3 です。まったくの偶然かもしれませんが。
console.log('1');
$(document).ready(function () {
console.log('2');
});
console.log('3');
tinyMce エディタを初期化するための doc.ready で一部のコードが正しく動作しませんが、doc.ready の待機を偽装するために 500 ミリ秒の遅延を設定すると問題なく動作します。したがって、新しい html が DOM に統合される前に JavaScript が実行されるのが早すぎるという問題のようです。明らかに、この setTimeout は一貫して機能しないハックです。
だから私の質問は:
.html($.parseHtml は結果内の doc.ready を尊重しますか?新しい html がそのスクリプトを実行するために DOM で準備が整うのを待つという点で?追加された html が dom で「準備完了」になるまで実行を待ちますか?