あなたが説明したことから、あなたのページは次のように設定されているようです:
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('jquery');
$(document).ready(function(){
... do stuff ...
});
</script>
<script src="/my/external.js" type="text/javascript"></script>
ただし、DOM が完全に読み込まれるまでイベントが発生しないため、これは期待どおりには機能しません。document.ready
ただし、JavaScript ファイルはロード時に実行されます。したがって、実際の実行は次のようになります。
- Google JSAPI を読み込む
- jQuery を読み込む
- External.js を読み込む
- ドキュメントの準備完了を呼び出す
コードの残りの部分がどのように見えるかによって、すべての初期化コードを別のファイルに入れるか、search
ロードをメイン ドキュメントに戻すことができます。
目立たないコードについて:
デイビッド、目立たない JavaScript は、それがページ内か外部かではなく、ページにどのように影響するかに関係しています。
それよりも、サイトを JavaScript に依存しすぎて、無効にすると機能しないようにしないことが重要です。
たとえば、これは目障りです。
<a href="#" onclick="doSomething(); return false;">Click Me</a>
JavaScriptが有効になっている場合にのみ機能するためです。さらに、コードはインラインであり、機能が構造 (HTML) から分離されていないため、不適切です。
ただし、同様のコードを使用すると、次のようになります。
<a href="/do/something" id="do-something">Click Me</a>
そして、このjavascript/jqueryスニペットを使用します:
$(document).ready(function(){
$("#do-something").click(function(e){
doSomethingNicer();
e.preventDefault(); // Keep the browser from following the href
});
});
ページは引き続き機能する (デフォルトで /do/something をロードする) ため目立たなくなりますが、JavaScript が有効になっているとより適切に機能します (その URL をロードする代わりに JavaScript を実行します)。これはプログレッシブ エンハンスメントとも呼ばれます。