あなたの言うことに基づいて、私は次の評価をします:
40% の可能性 -- スクリプトの負荷に関する問題です。ajax されたスクリプト内の他のスクリプトへの依存関係、ページで定義した変数、または読み込まれると思われる DOM コンテンツでさえ、スクリプトが ajax されて実行されるときに読み込まれない可能性があります。ページ上のスクリプト タグの順序を変更したり、ドキュメントready
イベント ハンドラ内にスクリプトのロードを配置したり、setTimeout を使用してスクリプトの実行を遅らせたり、またはdefer="defer"
本当にクールな場合は、すべてのスクリプトが確実にロードされるようにするブート ローダーを作成してみてください。指定した正確な順序で実行されます。つまり、依存関係のない同時ロードのセットを依存ロードのシーケンスに連鎖させることによって実行されます。
Script1 <---- 依存 --- (Script 2.1, Script 2.2, Script 2.3 ) <--- 依存 --- Script3.
したがって、最初に 1 をロードし、次に 2. すべてのスクリプトをロードし、次に 3.
可能性は 40% -- セキュリティ モデルに関するものです。あなたがそれを ajax しているウェブサイト、それはどこですか? ページが存在するドメインとの関係は? これをテストしていlocalhost
ますか?そうであれば、さらに制限があります。実際のサーバーではどうですか?ajax 応答で Access-Control-Allow-Origin ヘッダーが適切に設定されていますか?
20% の可能性があります -- これは、スクリプトと DOM の間の循環依存です。要素 X のイベント ハンドラーが、要素 X を参照するスコープで閉じるとします。その場合、X への参照内に X への参照が存在するため、両方をガベージ コレクションすることはできません。そのため、X が持続し、メモリ リークが発生し、コードを壊す可能性のある使用できない参照を作成する可能性があります。
- 編集 -
あなたのコメントに基づいて、.html(...)
スクリプトを実行するための .html または .load は面倒すぎて、まったく機能しない可能性があると思います。ajax でスクリプトをロードする良い方法については、.load() がスクリプトをロードしないを参照してください。または、できjQuery.getScript(...)
ます。
また、ajax を使用してプレーン HTML から html ノードをロードしても問題が発生したことを覚えているようです。私には面倒すぎるようです。構造化された情報を ajax 経由で転送する場合は、JSON を使用してから、JavaScript と HTML を使用してその情報を側に提示します。したがって、データ全体とプレゼンテーションを取得するのではなく、データのみを取得してから、独自のプレゼンテーションを作成してください。それははるかにきれいです。