2012-02-29 17 views
1

外部HTMLを読み込みたいとします。さらに、外部HTMLにはJavaScriptコードがいくつか含まれています。

<div id="external-content"></div> 

<script type="text/javascript"> 
    $("#external-content").load("external.html #myid", function() { 
    // do something 
    }); 
    $.getScript("external.js"); 
</script> 

external.jsは、外部からの要素にアクセスしようとします$(ドキュメント).readyコマンドを、持っていない限り、魔法のように動作します:ロード関数は、このスクリプトをロードしない、私はgetScriptを使用する必要がありますので、 .html。イベントは早すぎると思われます。私もコマンド$ .getScript( "external.js")を置こうとしました。 .loadコールバックに追加しましたが、成功しませんでした。 external.htmlを個別に歌い、external.jsを含めても、期待どおりに直接動作することに注意してください。

+0

external.htmlをロードしてサイトにexternal.jsを含めないのはなぜですか?そして、external.jsが反応する、独自のイベントを発生させますか? –

答えて

0

残念ながら、このタイミングは意味があります(つまり、これは正しい動作です)。タグ内のスクリプトはexternal.htmlの検索を起動し、それが戻るのを待たずに、external.jsの検索に移ります。その間、 'base'ドキュメントはまだロードされており、externa.htmlが取得される前に(実際にはおそらく)完了することがあります。

だから、あなたはそれによってタイミング状況に遭遇することができます。

文書が実際に準備ができている(external.htmlがロードされていることはDOMは、スクリプト可能であることの条件ではない)、external.jsがロードされ、利用できるが、外部されます.htmlがまだ完全に読み込まれていません。文書準備機能は、external.htmlの要素が存在する前に起動します(文書が準備できているので!)。

このアプローチを継続したい場合は、external.html内の要素のイベントのベース・ドキュメント(#myid)へのリスナーに委譲するためにexternal.js内にon()を使用していることを再確認する方法があります。

関連する問題