2009-06-30 11 views
5

私はサイトを構築しています。いくつかの段階で、私はIEの表示が少し壊れていて、Chromeは本体タグ(空)以外は何も表示していないことに気付きました。JavaScriptがインラインになるのに正当な理由はありますか

キーボードを部屋の周りに投げ込んでマウスの頭を叩いた後、私は問題を発見しました。私はインラインスクリプトブロックで閉じられていないHTMLコメントを残していました(どうやって、なぜ、雷のスピードを落として貼り付けエラーを起こしたのでしょうか?)。

<script type="text/javascript"> 
     <!-- 
     ... 
    </script> 

私は、問題はどちらか持って来ていない、またはスクリプトが外部た場合、はるかに顕著な方法で自分自身を明らかます(テストしていません)推測しています。とにかく、私は考えている、インラインスクリプトを書く本当に良い理由がある時がありますか?

+4

スクリプトタグ内にHTMLコメントを使用することは意味がありません。 Netscape Navigator 2が旧式のブラウザでテキストをテキストとして表示しないようにするために、Netscape Navigator 2が新しくなったとき(1996年頃)には必要でした。これは10年以上も問題がなかったので、気にしないでください。 – NickFitz

+0

ええ、私は知っている。それは完全な誤りだった。私はjsでそれらを使用しないので、それはカットアンドペーストの狂気の結果であったに違いないと言いました。 :-(すなわち、DOH! –

+0

の可能な複製[私はインライン対外部JavaScriptを使うべきですか?](http://stackoverflow.com/questions/138884/when-should-i-use-inline-vs-external-javascript ) – outis

答えて

9

No.書き込み​​。

+2

私は目立たないJavaScriptのファンでもあります。 –

+2

jQuery、YUI、Prototype、MooTools、Dojo。 – Travis

+0

良いフレームワークなしで控えめなjavascriptを書くのは不可能ではありません。あなたは何をしたいのですか?:) –

3

JavaScriptを可能な限り早く実行したい場合は、は、他のHTTPリクエストが必ず完了する前に実行されるため、インラインJavascriptを組み込むことができます。

サードパーティプロバイダのJavascriptが含まれていて、実際に選択肢がない場合もあります。特定の広告システムは、Googleアナリティクスと同様、気になるところです。

+2

私はいつもGoogleアナリティクスのコードを別のファイルに入れていますが、そうしない理由は何もありません。 – jeroen

2

スクリプトを動的に(PHPやASP.NET MVCページで言う)を生成する必要がある場合は、インライン:-)

+0

サーバで.phpjsのような拡張子を設定して、PHPで処理され、text/javascriptとして機能します。また、パフォーマンスが心配でない場合は、PHPを.jsの完全停止に処理するだけです。 – Macha

+1

でも、適切なヘッダーを持つ別個のPHPファイルを用意するほうがはるかに優れています(PHPコードのためにphpに.jsファイルを読み込ませる方法があります)。 JavaScriptがページ上に実際に存在しなければならない回数は非常に少なく、そのことを考慮して書かれている場合、これらのほとんどは避けることができます。 – cwallenpoole

+0

動的に生成されたJavaScriptが必要な状況がある場合は、代わりにAjaxの使用を検討します。 –

0

ほとんどのXSSの脆弱性のみインラインJavaScriptを使用して活用することができ、それを持っている理由のひとつだろう。

0

理由は必ずしも十分ではありませんが、ページの読み込みが高速になります。このため、スクリプトを別のファイルに書き込む場合でも、クライアント側でインラインで表示することが必要な場合があります。

+0

多くのページで必要な場合は、すぐにダウンロードを中止することができます。一方、それが1つのファイルであれば、キャッシュすることができます。 キャッシュの利点と比較して、インライン化は最小限です。 – Macha

+0

一般に、ページ固有のものだけがインライン展開されますが、実際にはサイトのスループットとネットラグにも依存します。ほとんどのブラウザは、要求に応じてファイルが新しいかどうかをチェックするので、インライン化していない場合でも、ややヒットします。私はたいていインライン展開を使用しません。 – stevedbrown

2

JSの書き込み量によって異なります。多くのサポートルーチン(多くの妥当性チェック、テキスト処理、アニメーション、エフェクト)を記述している場合は、別々のファイルにコードを記述するのが理にかなっています。これにより、コードの再利用が可能になり、HTMLページから多くの迷惑メールが削除されます。

一方、10行のコードを置く必要はなく、1つの関数(リフレッシュJSが気になる)を別のファイルに入れる必要はありません。ブラウザは別のJSファイルをダウンロードするために追加のHTTPリクエストを行う必要がないので、少し速くロードされます。

+0

多くのページで必要な場合は、すぐにダウンロードを中止することができます。一方、それが1つのファイルであれば、キャッシュすることができます。 – Macha

0

一部のイベントを新しく追加されたフォームフィールドにバインドする部分的にリロードされるページや、他のページで使用しないユニークなJavaScriptを使用するページにJavaScriptをインラインで配置することがあります。

0

多くの外部スクリプトを使用すると、ブラウザが各ファイルを別々に呼び出す必要があるため、最終的にページが遅くなる可能性があります。 JavaScriptを1つのファイルにまとめたり、ページ自体に組み込んだりすると、この問題が緩和されることがあります。

一方、最初に呼び出された後にブラウザがスクリプトファイルをキャッシュしてしまう可能性があるので、サイト全体に同じコードがたくさんある場合は、外部が行く方法です。

+0

私はすべてが1ページに読み込まれるというあなたの考えが好きです。あなたはこれを行うためにすでに言及した2つのアイデアを組み合わせることができます。たとえば、いくつかの異なる.jsファイルにすべてのJavaScriptファイルを作成し、PHPのinclude_onceを使用してそれらをすべて1ページにロードします。したがって、複数の.jsファイルを編集する利点がありますが、ブラウザには1ページだけの利点があります。 – cwallenpoole

0

XMLとActionScriptを組み合わせて最終的なバイトコードを作成するFlexというものがあります。できるだけ2つを分けるのがベストプラクティス常にです。そうすれば、View(私の場合はHTMLまたはMXML)をコントローラ(スクリプト)から非常にはっきりと簡単に分離できます

これはまた、1行で5つのファイルを調べる心配もありませんコードのすべて - あなたのコードはすべて1か所にあります。

関連する問題