JavaScript MIME型

text/javascript (MIME型)

[1] text/javascript は、 JavaScriptMIME型です。

仕様書

JavaScript MIME 型

[25] JavaScriptMIME型はいろいろありますが、そのうち、 text/javascript を常に使うべきです。

[88] script 要素については type 属性の項を参照。

[87] サーバーは、 JavaScripttext/javascript を使うべきです。それ以外の JavaScript MIME型を使うべきではなく、 その他の MIME型を使ってはなりません>>37

[60] 長らくこのことを明確に規定した仕様書は存在していませんでした。 HTML Standard は 「RFC 4329text/javascript廃止しているが、実際には最も良く用いられる MIME型なので、 本仕様書では text/javascript を用いる」 >>61 としています。 (仕様書内で使うと述べるだけで著者にそれを要求していなかったのは、 JavaScript仕様書が規定するべきで HTML が規定するべきではないとの立場なのでしょうか。)

[38] JavaScript MIME型 (JavaScript MIME type) は、次のものです >>37。 いずれも JavaScript を表します >>37

[71] JavaScript MIME型

[33] JavaScript に関してこれ以外のMIME型に対応してはなりません >>37

[28] 利用者エージェントは、 script 要素の処理でこの JavaScript MIME型 すべてを認識しなければなりません >>37

[59] これは script 要素type 属性language 属性の値の解釈に関する規定です (スクリプトの媒体型も参照)。外部スクリプトHTTPヘッダー Content-Type:MIME型は、原則として無視されます。 (X-Content-Type-Options: nosniff ヘッダーが指定された場合には、 JavaScript MIME型かどうかの検査も行われます。)
[32] JavaScript MIME型を認識することは求められていますが、 JavaScript 自体を実装することは仕様書上は要求されていません。 もっとも Web互換性のためには JavaScript を実装する必要があります。

[29] JavaScriptMIME型がこうも増殖してしまったのは、 数々の歴史的不幸が重なったためです。

[94] この混乱は HTML5 が状況を整理するまで続きました。

[91] 他に Node.jsモジュール用の MIME型として application/node があります。

引数

[15] text/javascript では、 少なくても2つの引数が知られています。

名前既定値意味
charsetcharset(プロトコル依存)文字コード
version不明 (1*DIGIT "." 1*DIGIT か?)(実装依存)JavaScript の版
e4x

[17] きちんと定義した仕様が無いので、 未知の引数・引数値に遭遇した時の実装の振舞いは予測不能です。

実装によっては、引数の存在自体や引数の順序、 引数指定内での空白の挿入・引数名や引数値の大文字・小文字などで不具合が生じる虞もあります。

[18] version 引数は多くの実装では無くても実装している適当な版で処理されますから、 どうしても必要でなければ省略するのがよいと考えられます。

charset 引数は、他の媒体型やプロトコルとの関係により、 たとえば MIMEHTTP では必ず指定し、 HTML では指定しないのがよいと思われます。

その他の引数はできれば指定しないのがよいでしょう。

text/ecmascript

[39] SVG 1.0 が初見です [ID]。 ECMAScript (ECMA 262) は ECMA によって標準化された JavaScript です。

IANAREG にはまだ登録されていません。

WinIEJScript として解釈します。

charsetmime.charset省略可MIME・[ID] (See charsetパラメーター)
version省略可[ID]

text/javascript

[40] W3C HTML の仕様書に登場しますし、実際にもかなり使われています。

IANAREG には登録されていません。

application/javascript 媒体型 に対応します。 (See also text/*媒体型に対応するapplication/*媒体型)

charsetmime.charset省略可MIME・[ID] (See charsetパラメーター)
version省略可[ID]

text/jscript

[41] MicrosoftJScript (JavaScript の亜種) に使われることがある媒体型です。 IANAREG には登録されていません。

IE が解釈出来ます。 (名無しさん 2004-03-17 00:38:07 +00:00)

[23] application/x-ms-jscript というのを見ました。 WinIE が解釈できるのかは不明。 (名無しさん 2004-03-20 03:54:55 +00:00)

text/livescript

[24] LiveScriptJavaScript の古称です。 受信側実装で対応しているものがありますが、実際に使用している文書や送信側実装があるのかはわかりません。 IANAREG には登録されていません。

text/x-javascript

[42] Netscape Navigator が解釈できるようです。

[43] >>42 手元にある NN では確認出来ません。 ScriptTest 参照。

application/ecmascript

[44] 実際に幾らか使用されているようです。 IANAREG には登録されていません。

application/javascript

[45] text/javascript に対応する媒体型です。 text/*媒体型, application/*媒体型の定義からすると、 application/javascript の方を使うべきですが、旧来の実装は text/javascript にしか対応していないものが少なくないですから、 application/javascript は LIMITED USE とされています [ID]。

IANAREG には登録されていません。

charsetmime.charset省略可MIME・[ID] (See charsetパラメーター)
version省略可[ID]

application/x-ecmascript

[48] 受信側実装で対応している ものがありますが、実際に使用している文書や送信側実装が あるのかはわかりません。

application/x-javascript

[49] Apache HTTP server などが使用しています。 application/javascript と同義であり、そう扱うよう [ID] は要請しています。

[50] Mozilla は対応しています。

[51] Mozilla のソースでは application/x-javascript が主流で、 text/javascript もよく使われています

[22] VRML では JavaScript媒体型application/x-javascript と規定しています。

text/javascriptN.N

[52] WinIE が対応しています。次の種類が確認されています。

version パラメーター

[21] JavaScript または ECMAScript の版を書きます。 どういう値を取るのかや既定値は規定されていません [ID]。

[53] Mozilla 1.3a で確認したところ、値が "1".("0"/../"5") なら script が実行されます。

[54] >>53 text/javascriptapplication/x-javascript での話。

[16] HTMLscript 要素で使用してみる例:

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

版引数つきの例:

<script type="text/javascript; version=1.3" src="script.js"/>

[19] HTTPMIME実体として JavaScript を送る例:

Content-Type: text/javascript; charset=iso-2022-jp
Content-Disposition: attachment; filename=script.js
var i = 0;

[20] .htaccess接尾辞 .jstext/javascript を関連付ける例:

AddType text/javascript .js

歴史

text/javascript

[10] (要調査: text/javascript の初出は HTML 3 Scripting draft または HTML 4 draft でしょうか。)

[14] JavaScript 関連の媒体型を遅ればせながら IANAREG に登録するための Internet Draft も書かれましたが、 残念ながら成立にはいたっていません。

(TODO: I-D の名前は?)

[8] JavaScript 系の媒体型を一挙に登録する試みも上手く行かなかったみたいだし、このまま非標準の歴史的媒体型名としてゆくゆくは消えるんだろうか?

[9] まあ当分は生き残り続けると思われるけど。

text/javascript が好ましくない n 個の理由

[11] text/javascript は、しばしば望ましくないとされます。

[12] そもそも JavaScript を使うなどけしからん: JavaScript は Web の可接性やしばしば可用性を損なうので使用するべきではないとの意見があります。 しかし、 JavaScript を使うかどうかと、使う時にどういう名前でラベル付けするかは別の次元の問題です。

[2] IANAREG (媒体型に関する IANA 登録簿) に登録されていない: text/javascript は現時点で IANAREG に登録されていません。媒体型を使う幾つかの規格は IANA に登録されていない型の使用を認めていません。

[3] しかしながら、 >>2 だけを理由に text/javascript を使うのはよくないと言う人は、もっとよく勉強するべきだと言わざるを得ません。 Web の幾つかの規格では、 IANA 登録名の使用が強制されていません。

[4] >>3 これは HTTP が出来た時に、 HTTP 通信で使われる媒体型指定はサーバーとクライアントの折衝の結果であって世界的に一意である必要はないと考えられていたことによります。 (この考えが現在でも通用するかはちょっと疑問です。それに、違う識別子を使うよりは同じ識別子を使う方が相互運用性が向上することは確かです。)

[5] しかしまあ、 MIME で使うときには登録しないといけないのでして。 (でも結局登録しようという I-D は expire されちゃったしねぇ。)

[6] とまれ、 HTML 4 で使うことは何も問題ないでしょう。 HTML 4 の仕様書の例に出てくるくらいですから。

[13] text/* を使うのは不適切である: text/* は予備知識がなくても大意が掴める文に使うと定義されているので、 ほとんどすべての場合において JavaScript に text/javascript という名前を充てるのは不適当です。

ウェブでは歴史的に text/* を plain text base の諸形式の媒体型として濫用してきました。 text/javascript もその一つです。

[7] >>2,>>13 の問題から最近は application/x-javascript が使われることが多くなってますし、そっちの方がよさげではあります。

[55] 2002-11-16 (土) 16:32 名無しさん: 色々使われてて嫌ですね... Netscape が最初に決めておくべきだった。

[56] Mozilla 1.3a は text/javascriptapplication/x-javascript に対応しています。

[57] Google グループにログイン ( 版) <https://www.google.com/groups/signin?login_required=1&passive=true&_done=http%3A%2F%2Fgroups.google.co.jp%2Fgroups%2Fcreate%3Fhl%3Dja%26lnk%3Dgcf&cd=US&hl=ja>
<noscript><style type="text/css"><!--
  .noscripthide { display:none; } .noscriptinline { display:inline; } .noscriptblock { display:block; }
--></style></noscript>
<script language="javascript"><!--
  document.write('<style type="text/css">.scripthide { display: none; } .scriptinline { display: inline; } .scriptblock { display: block; }</style>');
//--></script>
<script language="javascript1.2"><!--
  if (document.getElementById)
    document.write('<style type="text/css">.script12hide { display: none; } .script12inline { display: inline; } .script12block { display: block; } .lnav { position: absolute; } .lnavch { margin-left:23.0ex;}</style>');
//--></script>

<script language="javascript1.3"><!--
  if (document.getElementById)
    document.write('<style type="text/css">.script13hide { display: none; } .script13inline { display: inline; } .script13block { display: block; }</style>');
//--></script>
[46]

# 03:39] <Philip`> Hixie: "the MIME type used to refer to JavaScript in this specification is text/javascript, since that is the most commonly used type." - most commonly used where? http://canvex.lazyilluminati.com/misc/stats/scripttypes2.html says the HTTP Content-Type 1.5 years ago was almost always "application/x-javascript" instead

[03:45] <Hixie> hm, most commonly used isn't what i meant

[03:45] <Hixie> most recognisable, maybe?

[03:46] <Hixie> it's most commonly used in <script type="">, i think

[03:46] <Hixie> but i haven't checked recently

[03:47] <Philip`> http://canvex.lazyilluminati.com/misc/stats/scripts2.html - it was the most common <script type> by far

[03:51] <Hixie> ok

[03:51] <Hixie> then i'll claim that's what i meant :-P

[03:51] <Hixie> after all, i don't think i talk about the HTTP type anywhere

Script Content-Type values (total count)

application/x-javascript2954 (81.5%)
text/html229 (6.3%)
text/javascript123 (3.4%)

script type values (total count)

text/javascript31761 (53.8%)
[missing]25676 (43.5%)
text/JavaScript1339 (2.3%)

script language values (total count)

[missing]27315 (46.3%)
JavaScript18198 (30.9%)
javascript6689 (11.3%)
JavaScript1.22569 (4.4%)
JavaScript1.11559 (2.6%)
Javascript1077 (1.8%)
javascript1.2513 (0.9%)

[58] application/x-ms-jscript があります。

[47] Give JavaScript MIME types a <dfn> to refer to · whatwg/html@8d7fe57 ( 版) <https://github.com/whatwg/html/commit/8d7fe572bca136e1397ab8fae57db791fbf8ec13>

[34] Reference JavaScript MIME type now the HTML Standard defines it · whatwg/fetch@80540f2 ( 版) <https://github.com/whatwg/fetch/commit/80540f2b891b4d9301c60c5e1e216f40be3d6b80>

[35] JSの MIME-Type は text か application か、x- は必要か – カラクリ.jp (更新日2015年11月15日版) <http://xn--lcki7of.jp/153/>

[36] IETF が現実に合わない RFC を長年放置しているせいで、 >>35 のような混乱させられている記事が未だに執筆されたりしています。

メモ

[70] Add <script type="module"> and module resolution/fetching/evaluation · whatwg/html@cd1a9fb ( 版) <https://github.com/whatwg/html/commit/cd1a9fb1e83f7d0bc30be8b34ecdaf444a0b19a4>

[72] Add `application/javascript+module` mime to remove ambiguity · Issue #322 · tc39/ecma262 () <https://github.com/tc39/ecma262/issues/322>

[73] clarify the exact MIME for .mjs by bmeck · Pull Request #61 · nodejs/node-eps () <https://github.com/nodejs/node-eps/pull/61>

[74] On ES.next features prototype implementations in web browsers () <https://mail.mozilla.org/pipermail/es-discuss/2011-August/016267.html>

[75] draft-bfarias-javascript-mjs-00 - EMCAScript Media Types Updates () <https://tools.ietf.org/html/draft-bfarias-javascript-mjs-00>

[76] [Json] Add Extension to JS MIME () <https://www.ietf.org/mail-archive/web/json/current/msg04202.html>

[77] Re: [Json] Add Extension to JS MIME () <https://www.ietf.org/mail-archive/web/json/current/msg04209.html>

[78] Re: [Json] Add Extension to JS MIME () <https://www.ietf.org/mail-archive/web/json/current/msg04211.html>

[79] I-D/javascript-mjs at master · bmeck/I-D () <https://github.com/bmeck/I-D/tree/master/javascript-mjs>

[80] Re: [Json] Add Extension to JS MIME () <https://www.ietf.org/mail-archive/web/json/current/msg04212.html>

[81] [Json] ECMAScript Media Types Updates Work () <https://www.ietf.org/mail-archive/web/json/current/msg04214.html>

[82] Register some more JavaScript MIME types · Issue #2 · bmeck/I-D () <https://github.com/bmeck/I-D/issues/2>

[83] Clarify prose around JavaScript MIME types (annevk著, ) <https://github.com/whatwg/html/commit/470e168aaddc54e0abcfa302639870c299473c99>

[84] Clarify "Scripting languages" · Issue #2301 · whatwg/html () <https://github.com/whatwg/html/issues/2301>

[85] Simplify and clarify prose around JavaScript MIME types by annevk · Pull Request #3045 · whatwg/html () <https://github.com/whatwg/html/pull/3045>

[86] Require servers to use text/javascript for JavaScript (annevk著, ) <https://github.com/whatwg/html/commit/d6b4a00acb47dfb0bf93285e4def7b89227929d2>

[89] Register some more JavaScript MIME types · Issue #2 · bmeck/I-D () <https://github.com/bmeck/I-D/issues/2>

[90] Require servers to use text/javascript by annevk · Pull Request #3096 · whatwg/html () <https://github.com/whatwg/html/pull/3096>

[95] Move JavaScript and JSON MIME types from HTML (domenic著, ) <https://github.com/whatwg/mimesniff/commit/2ca219fd45c764267d37506d989c77751c171e59>

[96] Move JavaScript and JSON MIME types from HTML by domenic · Pull Request #58 · whatwg/mimesniff () <https://github.com/whatwg/mimesniff/pull/58>

[97] Editorial: update usage of the MIME Sniffing Standard (domenic著, ) <https://github.com/whatwg/html/commit/fc82f4f8774a2e7e80f6c9477bd881f6c783b186>

[98] Editorial: update usage of the MIME Sniffing Standard by domenic · Pull Request #3455 · whatwg/html () <https://github.com/whatwg/html/pull/3455>

[99] Updated JS MIMEs under 2 week review from IETF · Issue #102 · whatwg/meta () <https://github.com/whatwg/meta/issues/102>

[100] dispatch () <https://mailarchive.ietf.org/arch/browse/dispatch/?gbt=1&index=X3aBzTbPFT8bJRAYcO7ldjJmAls>