どちらが良いですか:<script type =“ text / javascript”>…</ script>または<script>…</ script>


97

どちらが使いやすいか便利です。

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

または

<script>...</script>

7
言語としてjavascriptを使用している場合は、もちろん1つ目が良い
Chinmayee G

スクリプトをjava-scriptは重要ではないと宣言すると、パフォーマンスが向上すると思いますが、すばらしい質問です。
The_Butcher 2010年

10
Html v4とHtml v5の場合、「正しい」答えは異なりますか?
Dimitrios Mistriotis 2010年

どちらが優れているかということではなく、いつ何を使うかです。HTML5宣言を使用する場合、デフォルトで適用されるため、タグで<!doctype html>MIMEタイプのヒントを使用する必要はありません。一方(HTML5以外)、(MIMEタイプのヒントを参照して)推奨されます。type="text/javascript"<script>type="text/javascript"
ニエディディケケ

回答:


137

タイプ属性が必要ですか?HTML5を使用している場合は、できません。そうでなければ、はい。HTML 4.01とXHTML 1.0 typeは必須として属性を指定しますが、HTML5はオプションとして、デフォルトでに設定しtext/javascriptます。HTML5は現在広く実装されているため、HTML5 Doctypeを使用する場合<script>...</script>は有効であり、適切な選択肢です。

type属性の内容についてはapplication/javascript、2006年に登録されたMIMEタイプは置き換えられることを意図してtext/javascriptおり、すべての主要なブラウザー(Internet Explorer 9を含む)の現在のバージョンでサポートされています。関連RFCから引用:

したがって、このドキュメントではtext / javascriptとtext / ecmascriptを定義していますが、これらは「廃止」としてマークされています。上記にリストされているように、実験的および未登録のメディアタイプの使用はお勧めしません。メディアタイプ、

  * application/javascript
  * application/ecmascript

これもこのドキュメントで定義されており、一般的な使用を目的としており、代わりに使用する必要があります。

ただし、バージョン8までのIE は、またはのいずれかの属性を<script>持つ要素内でスクリプトを実行しないため、古いIEをサポートする必要がある場合は、で立ち往生しています。typeapplication/javascriptapplication/ecmascripttext/javascript


3
type属性を「必要とする」必要はありません。HTML4.01またはXHTML 1.0に対して検証することは、もはややるべきことではなく、すべてのブラウザーがタグなしでタグをサポートしますtext/javascript
Ian Storm Taylor

9
@Ian:執筆時点では、HTML5仕様は草案であり、永続的に移動するターゲットの現在の状態にまだ変化していませんでした。HTML5のブラウザー実装は、現在のところ、かなりの遅れをとっていました。これを考慮すると、当時のHTML5は一般的なWebで使用するには実行可能ではなかったと私は思います。私の答えは完全に公正であり、常に「HTMLを有効にしたい場合」という免責事項が記載されていました。私は物事が進んでいて、この答えが改訂で可能であることに同意しますが、HTML 4.01でWebページを書くことは今や常に間違った行為であることに同意しません。
ティムダウン

1
+1、たまたまこの質問を見つけました。これは、Anne Van Kesterenのブログ(JavaScript MIMEタイプを含む)でのいくつかの投稿を思い出します。私はそれを完全に見つけることはできませんが、すべてのブラウザーで動作するため、まったく使用しないことを彼が勧めた投稿があると確信していました。多分それは誰かだった。type
アンディE

1
IE8以下で「application / javascript」JSファイルが実行されなかった理由を理解しようとしていたので、「ありがとう」と言いたかっただけです。
andrewtweber

「text / javascript; version = 1.8」についてはどうですか?
SparK

10

どちらも機能しますが、xhtml標準では次のものも指定する必要がありますtype

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

<!ELEMENT SCRIPT - - %Script;          -- script statements -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  type        %ContentType;  #REQUIRED -- content type of script language --
  src         %URI;          #IMPLIED  -- URI for an external script --
  defer       (defer)        #IMPLIED  -- UA may defer execution of script --
  >

type = content-type [CI]この属性は、要素のコンテンツのスクリプト言語を指定し、デフォルトのスクリプト言語を上書きします。スクリプト言語はコンテンツタイプとして指定されます(たとえば、「text / javascript」)。 著者は、この属性の値を提供する必要があります。この属性にはデフォルト値はありません。

上記の強調に注目してください。

http://www.w3.org/TR/html4/interact/scripts.html

注: HTML5(遠方)では、このtype属性は必須ではなく、デフォルトです。


9

<script type="text/javascript"> </script>html5 を使用している場合を除き、使用する必要があります。その場合は、推奨<script> ... </script>されます(type属性はデフォルトでその値に指定されているため)。


5

これが必要なすべてです:

<!doctype html>
<script src="/path.js"></script>

3

<script type="text/javascript"></script> 正しい方法であり、すべてのブラウザと互換性があるため


-2

最新のFirefoxでは、以下を使用する必要があります。

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

または、スクリプトが正しく実行されない可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.