0

質問したいことはほぼ言い尽くしました。しかし、すべての外部 .js ファイルをマスター ページの body タグの前に配置することは、asp.net Web サイトで問題ないのでしょうか?

yslow と Google の速度が示しているものから外れています。これらの JavaScript を組み合わせることができないため、「ページの読み込み後に」読み込もうとしていますが、そうすると役に立たなくなります。私のjqueryのいくつかが機能しません

.js ファイルを開始 body タグの上に移動したところ、動作しました。私は何を間違っていますか?ページの読み込み後に .js ファイルを読み込むにはどうすればよいですか? 誰でも提供できるアドバイスをありがとう!

4

3 に答える 3

2

「asp.netWebサイトでは、本文の終了タグの前にJavaScriptを配置しても大丈夫ですか?」

短い答え。はい。

長い答え。それはjavascriptに依存します。

記述されているように、DOMReady以前に特定のリソースをロードするだけでよく、後続のロジックがそれを信頼する可能があるため、ページのロード後にうまく機能しない場合があります。つまり、DOMReadyに画像を追加するjQueryがあり、それらの画像を処理したり、高さなどを取得したりする必要がある場合は、ページが読み込まれたとき(画像が読み込まれた後)に実行されるコードが少しある可能性があります。ページがすでに読み込まれている場合、この戦略は機能しません。 onloadIIRC、2回発砲しません。

そのように書く必要がありましたか?いいえ、各画像(またはその他のリソース)が読み込まれたことを確認した後にのみ実行されるコードを作成する方がよい場合があります。これは、適切なコードスニペットを念頭に置いていれば、通常は十分に簡単ですが、そうではありません。ささいなことでもあります。

「何が間違っているのですか?ページの読み込み後に.jsファイルを読み込むにはどうすればよいですか?」

物事を「間違って」行う方法はたくさんありますが、おそらくすべての種類のチェックの章全体を書くことができ、それでもすべてのケースをカバーすることはできないでしょう。一般的なケースをカバーするのは簡単だと思うので、ページのロード後にロードできるように書き直そうとするのを思いとどまらせるためにこれを言っているのではありません。頭のてっぺん。

于 2012-11-03T04:58:05.280 に答える
1

asp.net Webサイトであっても、jsファイルをbody終了タグの直前に配置することは問題なく、通常はベストプラクティスと見なされます。ただし、マスターページでは少し煩わしい/トリッキーな/混沌としたものになる可能性があります。

プラス面としては、jquery(またはその他)を1回参照するだけで、設定が完了します。ただし、ボディのコントロール/部分でjavascript / jqueryを使用している場合は、マスターページのファイルが読み込まれる前に実行されます。

これらの競合状態と戦うためにできることがいくつかあります...

JavaScriptをでラップしますwindow.onload = function() { /*your code*/ }。これは、ページのロード(画像、外部ファイルなど)が完了するまで待機してから呼び出されます。

私の選択(asp.net MVCでの作業)はを使用することRenderSection()です。詳細はこちら。Webformsには同等のものがあるかもしれません、多分誰かがそこでチャイムを鳴らすことができます。

于 2012-11-03T05:02:23.373 に答える
1

コメントで述べたように、JavaScriptは上から下に読み込まれます。したがって、後日ロードされるスクリプトで定義した関数を体内で呼び出すと、エラーが発生する可能性があります。おそらくあなたがしたいのは、それらのスクリプト(本文の真ん中にあるもの)をそれ自身のファイルに移動し、それらをドキュメントレディガードで囲むことです。

$(document).ready(function () {
  //Your code in here
});

これにより、ドキュメントdomの準備ができた後にコードが実行されることが保証されます。また、ライブラリと依存関係の後にこのドキュメントを追加してください。

これにより、JavaScriptの保守も容易になります。

于 2012-11-03T05:02:58.243 に答える