2016-08-25 2 views
-2

交換用の正しいJavaScript方法は<body onload="init();">です。古いブラウザをサポートする必要がなくなったことに注意してください。<body onload =>のJavaScript相当のもの

私のケースでは、すべてのタグにonClickイベントを追加したいと思います.JavascriptをHTMLページとは別に保存したいと思います。

window.onload = init(); 

はこれで始まったが、グローバルドキュメントオブジェクトがinit()内部利用できない見つけ、タイミングの問題であると思われるようです。それは古いブラウザでうまく機能しましたか?

document.addEventListener("DOMContentLoaded", init, false); 

最新の信頼性の高い方法だと思われますが、現代のすべてのブラウザでサポートされていますか?

次にinit()をページの一番下に置くことが推奨されていますが、明らかにHTMLでJavascriptを直接使用することに戻ります。

<script type="text/javascript">init();</script> 

私の初期化コードを実行する必要がありますか?

+3

確かな方法はありませんが、ブラウザごとのバリエーションをすべて隠すjqueryを使用するだけではどうですか? '$(document).ready(....)'は本質的にjqueryのどこでも機能し、jquery自体はあなたのJSのものを動かすよりもずっと簡単なコーディングの世界全体を開きます。 –

+1

実際に両方が間違っています。 'init()'はすぐに関数を呼び出し、関数参照 'init'を使用します。 (** No() '**) – Tushar

+0

あなたは' document.addEventListener( "DOMContentLoaded"、init、false); 'を意味しますか? – Rayon

答えて

0

$(function(){})、または$(document).ready(...)と言いますと、Marc Bと言います。あなたの質問を誤解していない限り、あなたが求めていることを達成するようです。 jQuery APIがこれをバックアップします。

.ready()メソッドは、ページのDOM(Document Object Model)が安全に操作されるとすぐにJavaScriptコードを実行する方法を提供します。

0

ほとんどの簡単な方法は、匿名関数を呼び出す自己と本文の最後にスクリプトタグを追加している:外部JSファイルの場合

<body> 

<!-- content here --> 

<script type="text/javascript"> 
(function() { 
    //Run init code here 
})(); 
</script> 
</body> 


を:

<body> 

<!-- content here --> 

<script src="main.js" type="text/javascript"></script> 
</body> 

main.jsファイル:

(function() { 
    //Run init code here 
})(); 
+0

それはうまくいくだろうが、私は本当にHTMLからJavaScriptを取り除きたいと思っている。 – NickC

+0

次に、スクリプトタグに '' src''属性を追加し、自己呼び出し匿名関数でjsファイルにコードをラップします。 – seahorsepip

-1

は今、余分な括弧の問題は、私はちょうどテストするために、約午前最終的な解決策を解決されているということです。

if (document.addEventListener) { 
 
    document.addEventListener("DOMContentLoaded", init); 
 
} else { 
 
    window.onload = init; 
 
}

私はjQueryのは、それは.readyだとこれを行うことができます知っていますこれらのページの一部はAjaxコンテンツの非常に小さなページであり、必要でない場合はJQueryのオーバーヘッドを避けることをお勧めします。

関連する問題