#?SuikaWiki/0.9
[1] [DFN[[CODE(MIME)[[[text/javascript]]]]
は、 [[JavaScript]] を表す[[媒体型]]名 (の一つ) です。
(他の媒体型名との関係については、[[JavaScript関係の媒体型]]を参照。)
[[#comment]]
* 引数
[15] [CODE(MIME)[text/javascript]] では、
少なくても2つの引数が知られています。
,名前 ,値 ,既定値 ,意味
,[CODE(MIME)[[[charset]]]],[CODE(ABNF)[charset]],(プロトコル依存),[[文字コード]]
,[CODE(MIME)[[[version]]]],不明 ([CODE(ABNF)[1*[[DIGIT]] "." 1*DIGIT]] か?),(実装依存),JavaScript の版
[17] きちんと定義した仕様が無いので、
未知の引数・引数値に遭遇した時の実装の振舞いは予測不能です。
実装によっては、引数の存在自体や引数の順序、
引数指定内での[[空白]]の挿入・引数名や引数値の大文字・小文字などで不具合が生じる虞もあります。
[18]
[CODE(MIME)[version]] 引数は多くの実装では無くても実装している適当な版で処理されますから、
どうしても必要でなければ省略するのがよいと考えられます。
[CODE(MIME)[charset]] 引数は、他の媒体型やプロトコルとの関係により、
たとえば [[MIME]] や [[HTTP]] では必ず指定し、
[[HTML]] では指定しないのがよいと思われます。
その他の引数はできれば指定しないのがよいでしょう。
[[#comment]]
* text/javascript が好ましくない n 個の理由
[11] [CODE(MIME)[text/javascript]] は、しばしば望ましくないとされます。
[12] '''そもそも JavaScript を使うなどけしからん''':
JavaScript は Web の[[可接性]]やしばしば[[可用性]]を損なうので使用するべきではないとの意見があります。
しかし、 JavaScript を使うかどうかと、使う時にどういう名前でラベル付けするかは別の次元の問題です。
[2] '''[[IANAREG]] [WEAK[(媒体型に関する IANA 登録簿)]] に登録されていない''':
[CODE(MIME)[text/javascript]] は現時点で IANAREG
に登録されていません。媒体型を使う幾つかの規格は IANA
に登録されていない型の使用を認めていません。
[3] しかしながら、 >>2 だけを理由に [CODE[text/javascript]] を使うのはよくないと言う人は、もっとよく勉強するべきだと言わざるを得ません。 [[Web]] の幾つかの規格では、 IANA 登録名の使用が強制されていません。
[4] >>3 これは [[HTTP]] が出来た時に、 HTTP 通信で使われる媒体型指定はサーバーとクライアントの折衝の結果であって世界的に一意である必要はないと考えられていたことによります。 (この考えが現在でも通用するかはちょっと疑問です。それに、違う識別子を使うよりは同じ識別子を使う方が相互運用性が向上することは確かです。)
[5] しかしまあ、 [[MIME]] で使うときには登録しないといけないのでして。 (でも結局登録しようという [[I-D]] は expire されちゃったしねぇ。)
[6] とまれ、 [[HTML 4]] で使うことは何も問題ないでしょう。 HTML 4 の仕様書の例に出てくるくらいですから。
[13] '''[CODE(MIME)[[[text/[VAR[*]]]]]] を使うのは不適切である''':
[CODE(MIME)[text/[VAR[*]]]] は予備知識がなくても大意が掴める文に使うと定義されているので、
ほとんどすべての場合において JavaScript に
[CODE(MIME)[text/javascript]] という名前を充てるのは不適当です。
ウェブでは歴史的に [CODE(MIME)[text/[VAR[*]]]]
を plain text base の諸形式の媒体型として濫用してきました。
[CODE(MIME)[text/javascript]] もその一つです。
[7] >>2,>>13 の問題から最近は [CODE[[[application/x-javascript]]]] が使われることが多くなってますし、そっちの方がよさげではあります。
[[#comment]]
* 歴史
[10] (要調査: [CODE(MIME)[text/javascript]] の初出は HTML 3 Scripting draft または HTML 4 draft でしょうか。)
[14] JavaScript 関連の媒体型を遅ればせながら IANAREG
に登録するための [[Internet Draft]] も書かれましたが、
残念ながら成立にはいたっていません。
(TODO: I-D の名前は?)
[8] JavaScript 系の媒体型を一挙に登録する試みも上手く行かなかったみたいだし、このまま非標準の歴史的媒体型名としてゆくゆくは消えるんだろうか?
[9] まあ当分は生き残り続けると思われるけど。
[[#comment]]
* 使用例
[16] [[HTML]] の [CODE(HTMLe)[[[script]]]] 要素で使用してみる例:
[PRE(HTML)[
]PRE]
版引数つきの例:
[PRE(HTML)[
]PRE]
[19] [[HTTP]] や [[MIME]] の[[実体]]として JavaScript
を送る例:
[PRE(MIME)[
[[Content-Type]]: text/javascript; charset=[SAMP(charset)[iso-2022-jp]]
[[Content-Disposition]]: [[attachment]]; [[filename]]=[SAMP(file)[script.js]]
var i = 0;
]PRE]
[20] [CODE(file)[[[.htaccess]]]] で[[接尾辞]] [CODE(file)[.js]]
と [CODE(MIME)[text/javascript]] を関連付ける例:
[PRE[
[[AddType]] text/javascript .js
]PRE]
[[#comment]]
* メモ