1

2つのJavascriptファイルを含むWebページがあります。2番目のファイルには、その前のファイルが必要です。具体的には、2番目のJavascriptファイルで、すぐにjQueryの.ajax()メソッドを使用しています。非常にエッジケースのシナリオで、jQueryを使用するときにjQueryの準備ができていない可能性はありますか?

注:$(document).ready()を使用したくないし、require.jsやhead.jsなどのライブラリを使用したくない。jQueryを使用するときにそこにあり、エッジの場合でもJavascriptのシングルスレッドの性質が尊重されることを確信したいだけです。

4

4 に答える 4

5

メソッドを使用する必要があるファイルの前にjQueryを参照している場合は、jQueryを使用$.ajax()できると確信できます。

そして明確にするために、 jQuery$(document).ready()の準備ができていることを保証するのではなく、DOMが操作の準備ができていることを保証します。

于 2013-02-19T23:35:21.123 に答える
2

はい、Javascriptは厳密にシングルスレッドであり、各スクリプトは次のスクリプトが解析される前に解析されます。

最初のスクリプトを最初に実行せずに2番目のスクリプトを実行する唯一の状況は、最初のスクリプトの要求が失敗したが、2番目のスクリプトの要求は成功した場合ですが、スクリプトのロードに失敗した場合は、とにかくかなり困惑します。

于 2013-02-19T23:35:31.193 に答える
2

<script>属性とともに含まれるスクリプトは、srcシリアルにロードされます。したがって、セットアップがある場合

<script src="one-file"></script>
<script src="other-file"></script>

...ドキュメントの解析を続行する前に(つまり、他のファイルの取得が開始される前に)、ダウンロードと実行を終了するone-file 必要があります。これはdeferandasync属性とは異なりますが、これらを省略している可能性があります。

私の答えがあなたにとって十分な安心感ではない場合、私はHTML仕様自体からそれを収集しました

于 2013-02-19T23:38:03.057 に答える
0

http://api.jquery.com/category/events/document-loading/をお読みください。基本的に、ページの先頭でコードが実行されるタイミングを設定しています。$(document).ready()を使用するかどうかは実際には問題ではありませんが、必須ですが、ほとんどの人はこれを次のように見ています。

$(function() {};

あなたの懸念が有効かどうかはわかりません。アプリをテストして自分で理解できない問題を実際に特定していませんが、以前にjscriptコードを実行したことがある場合はどうすればよいでしょうか。マルチjsファイル環境の時が来ました(技術に精通していない場合は特に、1を使用しないのはなぜですか):あるJavaScriptファイルを別のJavaScriptファイルからロードする方法は?jscript肩をすくめるからjscriptをロードします

$.getScript("another_script.js");
于 2013-02-19T23:42:09.277 に答える