2009-03-27 2 views
4

私は、コードのいくつかの作品でこれを見てきたと私はそれが重要だったが、これはGoogle Analyticsのコードのコピーである「仮定」したくありませんでした:ダブルスクリプトタグの値はありますか?

<script type="text/javascript"> 
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 
<script type="text/javascript"> 
    try { 
     var pageTracker = _gat._getTracker("UA-xxxxxx"); 
     pageTracker._trackPageview(); 
    } catch(err) {} 
</script> 

あなたがありますわかります2つのオープン/クローズスクリプトタグ。 2つの異なるスクリプトタグにコードビットをカプセル化することが有益な理由はありますか?私の最初の反応は単純に冗長性を取り除くことです。

答えて

5

最初のブロックは<script>タグをページに書き込みます。私は、もしコードがすべて1ブロックに入っていれば、コードの第2部分が実行される前に書かれた<script>がロードされるという保証はありません。

2つのブロックを使用すると、2番目のブロックが実行される前に、<script>という文字がロードされます(_gatオブジェクトを含む)。

0

私は2つのスクリプトブロックが異なるソースモジュール(クラス/オブジェクト/何でも)によって作成されたと思います。

0

ページに2つのスクリプトタグがある最も一般的な理由は、システムの2つの別々のモジュールが両方ともページにjavascript機能を追加したいが、それがきれいに挿入されるようにするためです。

ページを1つの静的なページとしてオーサリングする場合、1つのスクリプトタグで問題ありません。ページは動的に生成される可能性が高いので、あまり心配しないでください。

0

最初のスクリプトタグでエラーが発生した場合、2番目のスクリプトタグは引き続き実行されます。

しかし、2番目のものが最初のものに依存している場合(たとえば、最初のもので定義された関数を使用する場合)、それでも失敗する可能性があります。 (最初のものが完全に実行されなかったため)

関連する問題