スクリプトファイルが関数使用法の上に含まれている限り、その関数が利用可能になります。ブラウザは、
<script src="..."></script>
タグに出会うとレンダリングを停止します。スクリプトがダウンロードされて解析されるときにのみ、ドキュメントページの処理が再開されます。これは、常に、実際に必要な動作ではありません
<script src="..."></script> <!-- Browser waits until this script is loaded -->
<script>
foo(); // if function foo was in the script above, it is ALWAYS available now
</script>
- 時々あなたはそれがあなたのコードが遅いように見えることがありとしてダウンロードするためのスクリプトを待つ必要はありません。だから、スクリプト内で定義された任意の関数は、後に右利用できるようになります。 1つの方法は、すべてのスクリプトがロードされ、すべてのHTMLが既にレンダリングされているときに</body>
の前にページの最後に実行することです。外部スクリプトが発見された場合
// functions are defined or undefined just like regular variables
function myFunc() {
/*--code here--*/
}
// So we just need to see if it's defined
if(myFunc) {
/*--do something here--*/
} else {
/*--wait, retry or w/e--*/
}
、(X)HTMLは、どのがある場合は、外部スクリプトを読み取る(およびコードが内部で実行され、さらに、それまでは読み込まれません。関数が定義されているかどうかを確認するために
機能の実行時の最初の質問に感謝します。 2番目の質問では、ほとんどの人がjQueryを使うことが最良の選択肢であることに同意しているようです。しかし、関数が定義されている(ロードされている)かどうかを知ることができるかどうかは疑問でした。例えば、私はelemがロードされたことを保証するために次のようにすることができます:function ff(){if(!document.getElementById( 'elem'))setTimeout( 'ff()'、250); //ここからは 'elem'を使うことができます}しかし、関数が定義されているかどうかを知る方法はありますか? – Victor
@victor - if(typeof(functionName)!= 'undefined'){//関数が存在する} – x0n
libを使用せずにDOMを使用するコードを実行する場合は、使用しているポーリングメカニズムではなく、閉じたbodyタグの後のスクリプトタグ。 –