[118] [[スクリプト]]や [CODE(HTMLe)@en[[[script]]]] [[要素]]には、
いくつかの種別があります。

[FIG(list)[
- [119] [[スクリプト]]には、[[古典スクリプト]]と[[ワーカースクリプト]]があります。
- [120] [CODE(HTMLe)@en[[[script]]]] [[要素]]には、
[[スクリプト]]を表すものと、[[データブロック]]を表すものがあります。
- [121] かつては、[[JavaScript]] 以外の[[スクリプト言語]]も使うことができました。
- [122] データブロックのデータの種別は [[MIME型]]によって識別できます。
]FIG]

;; [107] [CODE(HTMLe)@en[[[script]]]] [[要素]]の項や[[スクリプト]]の項もご覧ください。

* 仕様書

[REFS[
- [140] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-21 07:50:23 +09:00]] 版) <https://html.spec.whatwg.org/#the-script-element>
-- [117] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-16 01:30:20 +09:00]] 版) <https://html.spec.whatwg.org/#attr-script-type>'''
-- [142] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-21 07:50:23 +09:00]] 版) <https://html.spec.whatwg.org/#prepare-a-script>
-- [110] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-12-22 10:28:15 +09:00]] 版) <https://html.spec.whatwg.org/#scriptingLanguages>
- [145] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-21 07:50:23 +09:00]] 版) <https://html.spec.whatwg.org/#obsolete-but-conforming-features>
- [147] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-21 07:50:23 +09:00]] 版) <https://html.spec.whatwg.org/#attr-script-language>
- [157] [CITE@en[Service Workers Nightly]] ([TIME[2017-03-02 15:00:14 +09:00]]) <https://w3c.github.io/ServiceWorker/#update-algorithm>
]REFS]

* [CODE(HTMLe)@en[script]] 要素 [CODE(HTMLa)@en[type]] 属性

[123] [CODE(HTMLe)@en[[[script]]]] [[要素]]の [CODE(HTMLa)@en[[[type]]]]
[[属性]]は、 [CODE(HTMLe)@en[[[script]]]] [[要素]]の種別を表します。

[124] 次の3通りがあります [SRC[>>117]]。

[FIG(table)[
:type: [CODE(HTMLa)@en[[[type]]]] [[属性値]]
:typeauth: [CODE(HTMLa)@en[[[type]]]] [[属性値]]の要件
:semantics: [[意味]]
:syntax: 構文
:attrs: 使っても良い[[内容属性]]
:bad attrs: 使っては[['''ならない''']][[内容属性]]

:type: [[JavaScript MIME型]]
:typeauth:
[125] 省略する[SHOULD[べきです]] [SRC[>>117]]。
:semantics: [[古典スクリプト]] [SRC[>>117]]
:syntax: [[JavaScript]] [CODE[[[Script]]]] [SRC[>>117]]
:attrs:
[CODE(HTMLa)@en[[[crossorigin]]]],
[CODE(HTMLa)@en[[[charset]]]], [CODE(HTMLa)@en[[[async]]]], [CODE(HTMLa)@en[[[defer]]]],
[CODE(HTMLa)@en[[[nonce]]]], [CODE(HTMLa)@en[[[src]]]]

:type: [CODE(HTML)@en[[[module]]]] ([[ASCII大文字・小文字不区別]])
:semantics: [[モジュールスクリプト]] [SRC[>>117]]
:syntax: [[JavaScript]] [CODE[[[Module]]]] [SRC[>>117]]
:attrs:
[CODE(HTMLa)@en[[[async]]]],
[CODE(HTMLa)@en[[[crossorigin]]]], [CODE(HTMLa)@en[[[nonce]]]], [CODE(HTMLa)@en[[[src]]]]
:bad attrs:
[CODE(HTMLa)@en[[[charset]]]] [SRC[>>117]], [CODE(HTMLa)@en[[[defer]]]]

:type: その他
:typeauth:
[CODE(HTMLa)@en[[[type]]]] [[属性]]は必須であり、
[[データブロック]]の形式を表す[[妥当なMIME型]]でなければ[['''なりません''']] [SRC[>>117]]。
:semantics: [[データブロック]]
:attrs: なし [SRC[>>117]]
:bad attrs: 
[CODE(HTMLa)@en[[[async]]]], [CODE(HTMLa)@en[[[charset]]]],
[CODE(HTMLa)@en[[[crossorigin]]]], [CODE(HTMLa)@en[[[defer]]]],
[CODE(HTMLa)@en[[[nonce]]]], [CODE(HTMLa)@en[[[src]]]] [SRC[>>117]]

]FIG]

[HISTORY[
[126] [CODE(HTMLa)@en[[[type]]]] [[属性]]は [[HTML4]] で導入されると同時に必須とされましたが、
従わない[[文書]]も多く、無意味な制約のため [[HTML5]] で削除されました。
更に2016年の[[モジュールスクリプト]]導入時に、冗長であるため省略する[['''べき''']]とされました。

[128] なお [CODE(HTMLa)@en[[[type]]]] [[属性]]が指定されていない場合、
[[HTML4]] より前の時代に使われていた [CODE(HTMLa)@en[[[language]]]]
[[属性]]が参照されます。 ([[Webブラウザー]]はそうしなければなりませんが、
[[著者]]は [CODE(HTMLa)@en[[[language]]]] [[属性]]を使ってはいけません。)
]HISTORY]

;; [127] 将来新たな値が必要となった時、 [CODE[[[module]]]]
のように [[MIME型]]ではない値が使われると期待されています。
そのため[[データブロック]]は適当な値ではなく [[MIME型]]を使うのが望ましいとされています。
[SRC[>>117]]

** [CODE(DOMi)@en[HTMLScriptElement]] インターフェイス [CODE(DOMa)@en[type][<script type>]] 属性

[141] [CODE(DOMi)@en[[[HTMLScriptElement]]]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[type]]][<script type>]] [[IDL属性]]は、
[CODE(HTMLa)@en[type][<script type>]] [[内容属性]]を[[反映]]しなければ[['''なりません''']]
[SRC[>>140]]。これは[[文字列]]として[[反映]]するものです。

* [CODE[script]] 要素のスクリプト言語

[173] [CODE[script]] [[要素]]のスクリプト言語の指定に関しては、
[CODE[type][<script type>]] [[属性]]の意味と基本的な要件の規定、
[CODE[type][<script type>]] [[属性]]と [CODE[language][<script language>]]
[[属性]]の [[obsolete but conforming]] の規定、
[CODE[script]] [[要素]]の [[prepare a script]] の挙動の規定が関係しており、
微妙にずれもあります。まとめると次の通りです。

[FIG(steps)[
= [CODE[type][<script type>]] [[属性]]が指定されない場合、
== [CODE[language][<script language>]] [[属性]]が指定されない場合、
==- 定義上は[[古典スクリプト]]です。
==- [[古典スクリプト]]として処理されます。
==- 適合します。
== [CODE[language][<script language>]] [[属性]]が[[空文字列]]の場合、
==- 定義上は[[古典スクリプト]]です。
==- [[古典スクリプト]]として処理されます。
==- 不適合です。
== [CODE[language][<script language>]] [[属性]]が [CODE[javascript]]
([[ASCII大文字・小文字不区別]]) の場合、
==- 定義上は[[古典スクリプト]]です。
==- [[古典スクリプト]]として処理されます。
==- [[obsolete but conforming]] です。
== [CODE[language][<script language>]] [[属性]]の前に [CODE[text/]]
をつけると [[JavaScript MIME型]] ([[ASCII大文字・小文字不区別]]) となる場合、
==- 定義上は[[古典スクリプト]]です。
==- [[古典スクリプト]]として処理されます。
==- 不適合です。
= [CODE[type][<script type>]] [[属性]]が[[空文字列]]の場合、
=- 定義上は[[古典スクリプト]]です。
=- [[古典スクリプト]]として処理されます。
=- [[obsolete but conforming]] です。
=- [CODE[language][<script language>]] [[属性]]が指定されていれば、不適合です。
=- [CODE[type][<script type>]] [[属性]]は省略するべきです。
= [CODE[type][<script type>]] [[属性]]がおおよそ [[JavaScript MIME型]] ([[ASCII大文字・小文字不区別]]) の場合、
== [[引数]]がある場合、
==- 定義上は[[データブロック]]です。
==- 不適合です。
== [[空白]]がある場合、
==- 定義上は[[データブロック]]です。
==- [[古典スクリプト]]として処理されます。
==- 不適合です。
== [CODE[text/javascript]] の場合、
==- 定義上は[[古典スクリプト]]です。
==- [[obsolete but conforming]] です。
==- [CODE[language][<script language]] [[属性]]が指定されていれば、
値が [CODE[javascript]] ([[ASCII大文字・小文字不区別]]) なら
[[obsolete but conforming]]、それ例外なら不適合です。
== それ以外の場合、
==- 定義上は[[古典スクリプト]]です。
==- [[obsolete but conforming]] です。
==- [CODE[language][<script language]] [[属性]]が指定されていれば、不適合です。
= [CODE[type][<script type>]] [[属性]]がおおよそ [CODE[module]] ([[ASCII大文字・小文字不区別]]) の場合、
== [[空白]]がある場合、
==- 定義上は[[データブロック]]です。
==- [[モジュールスクリプト]]として処理されます。
==- 不適合です。
== それ以外の場合、
==- 定義上は[[モジュールスクリプト]]です。
==- [[モジュールスクリプト]]として処理されます。
==- 適合します。
==- [CODE[language][<script language]] [[属性]]が指定されていれば、不適合です。
= [CODE[type][<script type>]] [[属性]]がその他の [[MIME型]]の場合、
=- 定義上は[[データブロック]]です。
=- 適合します。
=- [CODE[language][<script language]] [[属性]]が指定されていれば、不適合です。
= [CODE[type][<script type>]] [[属性]]がそれ以外の値の場合、
=- 定義上は[[データブロック]]です。
=- 不適合です。

]FIG]

-*-*-

[143] [CODE(HTMLe)@en[[[script]]]] [[要素]][VAR[要素]]の[DFN[[RUBYB[スクリプトブロックの型文字列]@en[the script block's type string]]]]は、
次のように決めなければ[['''なりません''']] [SRC[>>142]]。
[FIG(steps)[
= [276] [VAR[要素]]に [CODE(HTMLa)@en[[[type]]]] [[属性]]がある場合、
== [271] [VAR[文字列]]を、[VAR[要素]]の [CODE(HTMLa)@en[[[type]]]] [[属性]]の[F[[[値]]]]に設定します。
== [280] [VAR[文字列]]が[[空文字列]]なら、
=== [281] [VAR[文字列]]を、 [CODE[[[text/javascript]]]] に設定します。
== [272] それ以外なら、
=== [273] [VAR[文字列]]の先頭と末尾から[[間隔文字]]を (あれば)
すべて削除します。
= [277] それ以外の場合で、[VAR[要素]]に [CODE(HTMLa)@en[[[language]]]] [[属性]]がある場合、
== [274] [VAR[文字列]]を、[VAR[要素]]の 
[CODE(HTMLa)@en[[[language]]]] [[属性]]の[F[[[値]]]]に設定します。
== [282] [VAR[文字列]]が[[空文字列]]なら、
=== [283] [VAR[文字列]]を、 [CODE[[[text/javascript]]]] に設定します。
== [275] それ以外なら、
=== [284] [VAR[文字列]]の先頭に [CODE[[[text/]]]]
を追加します。
= [278] それ以外の場合、
== [279] [VAR[文字列]]を、 [CODE[[[text/javascript]]]] に設定します。
= [144] [VAR[文字列]]を返します。
]FIG]

[129] [CODE(HTMLe)@en[[[script]]]] [[要素]]の種別に応じた制約や処理方法については、
[CODE(HTMLe)@en[[[script]]]] や[[スクリプトの型]]の項を参照してください。

[135] なお、初回処理時の値が使われるので、動的に変更しても、意味を持ちません [SRC[>>140]]。

* スクリプト言語に対応

[171] [[Web]] では唯一の[[スクリプト言語]]として [[JavaScript]] が採用されています。

[111] [[JavaScript]] に対応する義務はありません [SRC[>>110]]。
しかし実際上 [[JavaScript]] に対応しない [[Webブラウザー]]は [[Web互換]]ではありません。

[172] 今後 [[WebAssembly]] が実装されることが想定されています。

[HISTORY[

[131] [[利用者エージェント]]が[DFN[[RUBYB[スクリプト言語に対応]@en[support the script language]]]]するとは、
[[利用者エージェント]]が[[実装]]する[[スクリプト言語]]の [[MIME型]]と[[スクリプト型]]とが
[[ASCII大文字・小文字不区別]]で一致することをいいます [SRC[>>110]]。

[132] この[[比較]]では、[[引数]]は無視しては[['''なりません''']] [SRC[>>110]]。

[HISTORY[
[133] 歴史的には [CODE(MIME)@en[[[e4x]]]] [[引数]]や [CODE(MIME)@en[[[version]]]]
[[引数]]の有無や値が[[スクリプト言語]]の区別に影響していましたが、
今はすべて[[引数]]なしとなっています。従って、
[[引数]]がある場合、未知の[[スクリプト言語]]と解釈されます。
[CODE(MIME)@en[[[charset]]]] [[引数]]も、未知の[[引数]]とみなされます。
]HISTORY]


[134] [[利用者エージェント]]は [[JavaScript MIME型]]を認識しなければなりません。
[[JavaScript]] に関してそれ以外の [[MIME型]]に対応しては[['''なりません''']]。
[SRC[>>110]]

[112] [[利用者エージェント]]は他の[[スクリプト言語]]に対応しても構いません [SRC[>>110]]。
しかし [[HTML Standard]] は他の言語は[[適用範囲外]]としています [SRC[>>110]]。

[HISTORY[
[113] かつては [[HTML Standard]] も他の言語を想定していましたが、
具体的な処理は [[JavaScript]] の場合のみ規定していました。
([[XML]] ベースの[[スクリプト言語]]の場合の一般的な処理の規定もありました。)

[114] [[IE]] が [[VBScript]] を[[非推奨]]とし、 [[JavaScript]]
にかわる言語が [[Webブラウザー]]に新たに実装される見込みもないため、
この規定は削除されました。
]HISTORY]

[136] 次の [[MIME型]]は、[[引数]]の如何に関わらず、
[[スクリプト言語]]として解釈しては[['''なりません''']] [SRC[>>110]]。
これらは常に[[データブロック]]と解釈されます。
[FIG(short list)[
- [CODE(MIME)@en[[[text/plain]]]]
- [CODE(MIME)@en[[[text/xml]]]]
- [CODE(MIME)@en[[[application/octet-stream]]]]
- [CODE(MIME)@en[[[application/xml]]]]
]FIG]

;; [137] この一覧は、 >>139 の [[JSON]] 形式のデータファイルに含まれています。
[REFS[
- [138] ドキュメント [CITE@en[data-web-defs/mime-types.txt at master · manakai/data-web-defs]] ([TIME[2015-09-03 21:50:01 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/doc/mime-types.txt>
- [139] データファイル [CITE@en[data-web-defs/mime-types.json at master · manakai/data-web-defs]] ([TIME[2015-09-03 21:49:33 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/data/mime-types.json>
]REFS]

]HISTORY]

* サービスワーカーのMIME型

[158] [[サービスワーカー]]の[[スクリプト]]の [[MIME型]]は、通常の[[スクリプト]]よりも制限されています。

[159] [[更新][更新ジョブ]]の[[fetchの実行]]で、次のいずれかの [[MIME型]]でない場合、
[[エラー]]となります [SRC[>>157]]。

[FIG(list middle)[
- [CODE(MIME)@en[text/javascript]]
- [CODE(MIME)@en[application/x-javascript]]
- [CODE(MIME)@en[application/javascript]]
]FIG]

* 歴史

** [CODE(HTMLe)@en[script]] 要素 [CODE(HTMLa)@en[language]] 属性

*** HTML5

[146] [[HTML5]] は当初 [[HTML4]] [[Strict DTD]] の方針を引き継ぎ
[CODE(HTMLa)@en[[[language]]]] [[属性]]を[[廃止]]としていましたが、
後に現実に合わせて無害なものは認める方針としました。

[148] [CODE(HTMLa)@en[[[langauge]]]] [[属性]]は[[廃止]] [SRC[>>147]]
されており、[[著者]]は指定する[['''べきではありません''']] [SRC[>>145]]。

[149] 指定される場合には、 [CODE[[[javascript]]]] ([[ASCII大文字・小文字不区別]])
でなければ[['''なりません''']] [SRC[>>145]]。加えて、その場合、
[CODE(HTMLa)@en[[[type]]]] [[属性]]は指定されていないか、
値が [[ASCII大文字・小文字不区別]]で [CODE(MIME)@en[[[text/javascript]]]]
と一致するかのいずれかでなければ[['''なりません''']] [SRC[>>145]]。

[150] これは「[[obsolete but conforming]]」です。すなわち、
[[適合性検査器]]はこれを問題として警告しなければ[['''なりません''']]が、
通常の適合性エラーとは区別することになっています。

[151] なお、以上は[[著者]]に対する要件であり、[[利用者エージェント]]は引き続き
[CODE(HTMLa)@en[[[language]]]] [[属性]]を実装し続けなければなりません。

[152] ちなみに、 [CODE(HTMLa)@en[[[language]]]] [[属性]]を[[反映]]する
[[IDL属性]]はなぜか存在しないようです。

* スクリプトの種類を識別するプロトコル要素


** インターネット媒体型

[53] [DFN[[[媒体型]]]]は、 [[MIME]] で[[実体]]の書式を識別するために考案された識別子で、
後に [[Web]] でも種類の標準的な識別子として取入れられました。
そして、 [[HTML 4]] は [CODE(HTMLe)[script]] 要素の [CODE(HTMLa)[type]]
属性でスクリプトの種類の指定のために媒体型を採用しています。

[2] [[HTML]] に埋め込まれて使うような類の[[スクリプト]]の
Internet [[媒体型]]は、大抵 [[IANAREG]] に載ってません。
そのせいもあって色んな指定が溢れています。

[[#comment]]


** language 属性の識別子

[54] HTML の [CODE(HTMLe)[script]] 要素は、当初は [CODE(HTMLa)[language]]
属性によってスクリプト言語を識別していました。この識別子は、
単純な文字列であり、名前の標準化・登録や名前空間、
スクリプト言語の版などのための仕組みは用意されませんでした。

HTML 4 は媒体型を使う [CODE(HTMLa)[type]] 属性を導入し、
[CODE(HTMLa)[language]] 属性は非推奨としています。そのため、
[CODE(HTMLa)[language]] 属性由来の識別子が今後広く使われることはないでしょう。

[181] [[HTML 4]] でも''[[非推奨]]''ながら
[CODE(HTMLa)[language]] [[属性]]は存在します。ないと誤解している文書があるようですので。

** OpenDocument text:script 要素 script:language 属性

[97] [[OpenDocument]] 1.0 の [CODE(XMLe)@en[text:[[script]]]] [[要素]]は、
[[スクリプト]]の種類を [CODE(XMLa)@en[script:[[language]]]] [[属性]]で示すことになっています。
ただし、例として「JavaScript」が挙げられている以外、何も説明がありません。 (6.6.6 節)

* スクリプトの種類を指定するプロトコル要素


** script 要素 type 属性 (HTML, XHTML 1, XBL)

[35] [[HTML]] の [CODE(HTMLe)[[[script]]]] 要素の
[DFN[[CODE(HTMLa)[type]] 属性]]は、その [CODE(HTMLe)[script]]
要素の内容の言語を指定します。

[24] [[XBL]] での [CODE(XMLe)[[[script]]]] 
要素の定義は、仕様書によれば HTML 4 と同じです。
(でも意図としては [[XHTML 1]] と同じ、だと思います。)

[36] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[script]] 要素 [CODE(HTMLa)[type]] 属性
<IW:HTML4:"interact/scripts.html#adef-type-SCRIPT">
-- [CITE[18.2.2 Specifying the scripting language]]
<IW:HTML4:"interact/scripts.html#idx-scripting_language">
- [32] [Microsoft]
-- [CITE[TYPE Attribute | type Property (SCRIPT)]] 
<http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/type_8.asp>

[70]
[CITE[IHTMLScriptElement::type Property (Internet Explorer)]] <http://msdn.microsoft.com/workshop/browser/mshtml/reference/IFaces/ScriptElement/type.asp>
([[名無しさん]] [sage])

[[#comment]]


*** 属性値

[37] この属性の値は [CODE(SGML)[%[[ContentType]]]] です。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。

[38] この属性は必須です。省略することはできません。

[[#comment]]


*** 他との関係

[39] [CODE(HTMLe)[script]] 要素のスクリプト言語の指定には、
[CODE(HTMLa)[language]] 属性も使えます。元々はそちらが使われていましたが、
[[HTML 4]] ではこれを非推奨とし、代わりに [CODE(HTMLa)[type]]
属性を必須としています。

[[#comment]]


*** 実装

[40] [CODE(HTMLe)[script]] 要素を知っている実装でも、古いものは
[CODE(HTMLa)[language]] 属性にしか対応しておらず、
[CODE(HTMLa)[type]] 属性による指定は無視されてしまいました。
そのため、両方の属性を指定することが好ましいと言われていたこともありました。
(現在では [CODE(HTMLa)[type]] 属性を知らない実装は死滅していると考えられています。)

また、ほとんど (すべて?) の実装は、 [CODE(HTMLa)[type]] 属性も
[CODE(HTMLa)[language]] 属性の両方ともが指定されていない場合には
[[JavaScript]] で書かれていると解釈します ([CODE(HTTP)[[[Content-Style-Type]]]]
を継承するものもあるかもしれません)。

[41] [CODE(HTMLa)[type]] 属性と [CODE(HTMLa)[language]] 属性が矛盾しているときの
UA の挙動は規定されていません。 [CODE(HTMLa)[type]] 
属性を優先させるものが多いように思われます。

[62] [[Mozilla]] 1.3a では、 [SAMP(HTML)[<script type="text/javascript;version=1.2" />]] 
のように指定できます。 [SAMP(HTML)[<script type="text/javascript; version=1.2" />]] 
とか [SAMP(HTML)[<script type="text/javascript;x-foo=bar; version=1.2" />]] とかでも OK 
ですが、 [SAMP(HTML)[<script type="text/javascript;version=&quot;1.2&quot;" />]] や 
[SAMP(HTML)[<script type='text/javascript;version="1.2"' />]] では動作しません。

[63] [CODE(HTMLa)[language]] 属性と [CODE(HTMLa)[type]] 属性とで値が違う場合、
[[Mozilla]] 1.3a や [[WinIE 6]] では [CODE(HTMLa)[type]] 属性が優先されます。

[64] [[WinIE]] ではスクリプト言語の既定値は [CODE(SGML)[#[[CURRENT]]]] 
(ただし初出では JScript) になるらしいです。

[78]
[CITE[/trunk/WebCore/html/HTMLTokenizer.cpp - WebKit - Trac]] <http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/html/HTMLTokenizer.cpp#L1172>
([[名無しさん]])

[[#comment]]



*** 例

[60] 複数のスクリプト言語が混在する例 [SRC[HTML 4 18.6.2.2、改]]
[PRE(HTML)[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
     "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>A document with SCRIPT</TITLE>
<META http-equiv="Content-Script-Type" content="text/tcl">
<SCRIPT type="text/vbscript" src="http://someplace.example/progs/vbcalc">
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT type="text/javascript">
[VAR[...some JavaScript...]]
</SCRIPT>
</BODY>
</HTML>
]PRE]

この文書の既定の言語は [[Tcl]] ですが、 [CODE(HTMLe)[head]]
内の外部スクリプトは [[VBScript]], [CODE(HTMLe)[body]]
内の埋込み (内部) スクリプトは [[JavaScript]] で書かれています。

[[#comment]]


*** メモ

[61] [CODE(HTMLa)[type]] の適用対象は[Q[内容]]とされており、
外部スクリプトには適用されないように思えますが、
>>60 の例より適用されると考えられます。
もっとも、外部スクリプトの場合は他の要素の [CODE(HTMLa)[[[type]]]]
属性同様に、属性値はヒント程度で、実際には外部資源の
[CODE(MIME)[[[Content-Type]]]] に拠って処理するのが適当と考えられます。

[[#comment]]


** スクリプト系要素の type 属性 (XBL)

[43] その要素又は子孫の内容であるスクリプト言語を示します。
省略可能で既定値はありません。

- [[implemention]] ☆
-- [[method]] ☆
--- [[parameter]] @
--- [[body]] @
-- [[property]] ☆
--- [[getter]] ☆ @
--- [[setter]] ☆ @
- [[handlers]] ☆
-- [[handler]] ☆ @

[CODE[☆]] の要素には、 [CODE(XBL)[type]] 属性が存在します。
[CODE[@]] の要素は、その内容がスクリプトです。

ある要素で [CODE(XBL)[type]] 属性の値が無い場合、親要素の値が継承されます。

[44] 仕様書 (>>45) では値の例として [CODE(MIME)[text/javascript]] が挙がっています。
[[Mozilla]] では他に [CODE(MIME)[application/x-javascript]]
が使われています。しかし、値が指定されていない XBL 文書もあります。
Mozilla では [[JavaScript]] を既定値とみなしているようです
(というか他の言語に対応していないし)。

実のところ仕様書にある例も [CODE(XMLa)[type]] 属性が無かったりします。

[CODE(XMLa)[type]] 属性が無い場合
[[HTTP]] サーバーでは [CODE(HTTP)[[[Content-Script-Type]]:]]
欄を供給するのが良いかもしれません。

- [45] ''XBL - XML Binding Language''
-- [CODE(XMLe)[implemention]] 要素<http://www.w3.org/TR/xbl#attr-implementation-type>
-- [CODE(XMLe)[method]] 要素 <http://www.w3.org/TR/xbl#attr-method-type>
-- [CODE(XMLe)[property]] <http://www.w3.org/TR/xbl/#attr-property-type>
-- [CODE(XMLe)[getter]] <http://www.w3.org/TR/xbl/#attr-getter-type>
-- [CODE(XMLe)[setter]] <http://www.w3.org/TR/xbl/#attr-setter-type>
-- [CODE(XMLe)[handlers]] <http://www.w3.org/TR/xbl/#attr-handlers-type>
-- [CODE(XMLe)[handler]] <http://www.w3.org/TR/xbl/#attr-handler-type>
[[#comment]]


** Content-Script-Type: 頭欄 (HTTP)

[46] [CODE(HTTP)[[[Content-Script-Type]]:]] 欄の説明をご覧ください。


** language 属性 (HTML 4, XHTML 1)

[55] [[HTML]] の [CODE(HTMLe)[[[script]]]] 要素の 
[DFN[[CODE(HTMLa)[language]]]] [[属性]]は、その要素の内容の[[スクリプト言語]]を指定します。

[57] [[WinIE]] では任意の要素に指定できて、
[[内在事象取扱器]]属性に適用されます。

[56] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[script]] 要素 [CODE(HTMLa)[language]] 属性
<IW:HTML4:"interact/scripts.html#adef-language">
- [31] [Microsoft]
-- [CITE[LANGUAGE Attribute | language Property (A, ACRONYM, ADDRESS, ...)]]
<http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/language.asp>

[69]
[CITE[IHTMLElement::language Property (Internet Explorer - DHTML)]] <http://msdn.microsoft.com/workshop/browser/mshtml/reference/ifaces/ihtmlelement/language.asp>

[176] <http://msdn.microsoft.com/en-us/library/ms533940%28VS.85%29.aspx> 

*** 代替

[58] この属性は非推奨です [SRC[HTML 4]]。
代わりに、 [CODE(HTMLa)[type]] 属性が利用できます。

[[#comment]]


*** 属性値

[3] この属性の値は [CODE(SGML)[[[CDATA]]]] で、
大文字・小文字を区別しません。スクリプト言語の識別子ですが、
標準化されておらず、 [CODE(HTMLa)[type]] 属性があるので非推奨とされています。
[SRC[HTML 4]]

[5] [[M$DN]] によると [CODE(HTMLa)[language]] 属性の値には
[Q[[[.NET]] と互換性のある全ての言語を指定できます]]。

[59] この属性は省略可能です。省略時については [CODE(HTMLa)[type]]
属性の説明をご覧ください。

*** メモ

[76]
[CODE(HTML example)@en[JavaScript 1.8]]:
存在しない版、版番号の前の [CODE(charname)@en[[[SPACE]]]]
([[名無しさん]] [sage])

[95]
[CITE[中時部落格-回頭是岸]] ([CODE[2008-06-08 22:24:53 +09:00]] 版) <http://blogger.chinatimes.com/taipeijk/Contact.aspx?id=1>

>
[PRE(HTML invalid example code)[
							<input type="submit" name="Contact1:btnSend" value="確認並送出" onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="Contact1_btnSend" class="button" />
]PRE]

([[名無しさん]])

[[#comment]]


** メモ

[65]
[CITE[DTV A S E L 1 (DASE-1) P 2: D A E ATSC Standard]] <http://www.atsc.org/standards/a_100_2.pdf> の規定する HTML の一種は、既定のスクリプト言語の決定に HTTP 頭欄を使わず、
[CODE(HTMLe)[meta]] 要素の [CODE(HTMLa)[[[name]]]] 属性の値が [CODE[Content-Script-Type]] であるものを使います。その [CODE(HTMLa)[[[content]]]] 属性の値は[[媒体型]]です。省略時の既定値は [CODE(MIME)[text/ecmascript]] です。
[SRC[5.1.1.6.7.1 Default Script Content Type]]
([[名無しさん]] [sage])

[[#comment]]


* 実際に見られる識別子の値

[42] 現実に何らかの仕様書で規定・例示されていたり、
実装が存在していたり、使用している文書が存在していたりする具体的な識別子の値として知られているものを次に言語ごとに紹介します。

[[#comment]]


** ECMAScript 系 (JavaScript, JScript など)

[12] '''媒体型''': [CODE(MIME)[[[application/x-javascript]]]],
[CODE(MIME)[[[text/javascript]]]] などがあります。
詳しくは [[JavaScript関係の媒体型]]をご覧ください。

[13] '''[CODE(HTMLa)[language]] 属性''':
- (無指定) (NN2+, WinIE3+)
- [CODE(HTML)[LiveScript]] (NN2+, WinIE3+)
- [CODE(HTML)[JavaScript]] (NN2+, WinIE3+)
- [CODE(HTML)[JavaScript1.0]] (? Moz 1.3a)
-- [14] 新しい版との対称性のため後から追加されたようです。
- [CODE(HTML)[JavaScript1.1]] (NN3+, WinIE4+)
- [CODE(HTML)[JavaScript1.2]] (NN4+, WinIE4+)
- [CODE(HTML)[JavaScript1.3]] (NN4.06+, WinIE5+)
- [CODE(HTML)[JavaScript1.4]] (NN6+)
- [CODE(HTML)[JavaScript1.5]] (NN6+)
- [CODE(HTML)[JScript]] (WinIE4+)
- [17] [CODE(HTML)[ECMAScript]] (? WinIE6)

[47] '''拡張子''': [CODE(file)[.js]] がよく使われます。

参考文献:
- [15] ''スクリプトバージョンのチェック'' 
<http://www.fureai.or.jp/~tato/JS/scripttg.htm>
-- 実際にお使いの [[UA]] で確認出来ます。良頁。
- [16] ''JavaScript Script Tag and Language Acceptance'' 
<http://www.mauvecloud.net/jscore/jslang.html>
- [[ScriptTest]]
- [26] ''DOM Sample - Script Tag'' 
<http://www.din.or.jp/~hagi3/JavaScript/JSTips/Mozilla/Samples/TagScript.htm>


** VBScript

[18] '''媒体型''':
- [CODE(MIME)[[[text/vbs]]]]
- [CODE(MIME)[[[text/vbscript]]]] (WinIE3+, HTML 4 仕様書に例あり)
- [CODE(MIME)[[[text/x-vbscript]]]] 
(<http://www.w3.org/TR/2002/WD-xhtml2-20021218/mod-scripting.html> に例あり)
- [CODE(MIME)[[[application/x-vbscript]]]]

[19] '''[CODE(HTMLa)[language]] 属性''':
- [CODE(HTML)[VBScript]] (WinIE3+)
- [CODE(HTML)[VBS]] (WinIE3+)
- [1] [CODE(HTML)[VB]] ([[M$DN]] とかにあるが WinIE 未対応。)

[48] '''拡張子''': [CODE(file)[.vbs]] が良く使われます。

[[#comment]]


** PerlScript

[49] [Q[PerlScript]] は [[ActiveScript]] 機能により WinIE
などから利用できる [[Perl]] です。 [[ActivePerl]] (Win32 向けの Perl 配布)
の一機能となっています。

[20] '''媒体型''':
- [CODE(MIME)[[[text/perlscript]]]] (ActivePerl)
- [CODE(MIME)[[[application/x-perlscript]]]]
- [CODE(MIME)[[[[text/x-perl]]]]
(<http://www.w3.org/TR/2002/WD-xhtml2-20021218/mod-scripting.html> に例あり)

[6] '''[CODE(HTMLa)[language]] 属性''':
- [CODE(HTML)[PerlScript]]

[50] 参考: PerlScript でない一般の [[Perl]] script・module 等には 
[CODE(MIME)[[[application/x-perl-script]]]], [CODE(MIME)[[[application/x-perl]]]] 
が使われています。

** TCL

[21] '''媒体型''':
- [CODE(MIME)[[[text/tcl]]]] (HTML 4 仕様書に例あり)
- [27] [CODE(MIME)[[[[text/x-tcl]]]]

** RubyScript

[51] [Q[RubyScript]] は [[ActiveScript]] によって [[WinIE]]
などで使うことができる [[Ruby]] で、 [[ActiveRubyScript]]
というプログラムにより実装されています。

[10] '''媒体型''':
- [CODE(MIME)[[[text/rubyscript]]]]

[11] '''[CODE(HTMLa)[language]] 属性''':
- [CODE(HTML)[RubyScript]] (ActiveRubyScript)

** C#

[4] '''[CODE(HTMLa)[language]] 属性''':
- [CODE(HTML)[C#]]

普通は生の HTML 文書ではなく、 [[ASP]] などで使われます。

** Cache'

[7] '''[CODE[language]] 属性''': 
- [CODE(HTML)[Cache]] ([[CSP]] ([CITE[技術サポート]]
<http://www.cacheinfo.com/techinfo.htm> 参照。))

生の HTML 文書ではなく、 [[CSP]] で使われます。

** SQL

[25] '''[CODE(HTMLa)[language]] 属性''': 
- [CODE(HTML)[SQL]] ([[CSP]] ([CITE[技術サポート]] 
<http://www.cacheinfo.com/techinfo.htm> 参照。))

Script なのか? という気はしないでもないですが。

** COBOL

[8] '''[CODE(HTMLa)[language]] 属性''':
- [CODE(HTML)[COBOL]] ([[NetCOBOL]] ([[.NET]] 化した [[COBOL]]) 用)

[9] >>8 そこまでするか COBOLer って感じですが。

** XML Data Island

[28] '''[CODE(HTML)[language]] 属性''':
- [CODE(HTML)[xml]]

[29] '''[[媒体型]]''': 
- [CODE(MIME)[[[text/xml]]]]

[33]
[[XML Data Island]] によるデータ・スクリプトならしいです。
凡人には理解できない [[M$]] 独自技術です。
独自技術に勝手に標準技術の名前を使うところがまた M$ らしい。

>>31 によれば [[WinIE]] 5 以上が対応しています。

参考文献:
- [30] [CITE[Concepts]] <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/xml_concepts2_2n03.asp>

[[#comment]]


** Python

[34] '''[CODE(HTMLa)[language]] 属性''':
- [CODE(HTML)[Python]]

[67]
[CODE(MIME)[[[application/x-python]]]] で
[[Python]] を使えるようにしようという話

[CITE[Programming languages]] <http://www.mozilla.org/events/dev-day-feb-2004/mozilla-futures/langs.html>
([[名無しさん]])

[80]
[CITE@en[PyDOM - MDC]] ([CODE[2006-10-06 05:32:56 +09:00]] 版) <http://developer.mozilla.org/en/docs/PyDOM#Using_Python>
([[名無しさん]])

[[#comment]]


** メモ

[66]
PHP language=php (鯖側処理)
([[名無しさん]] [sage])

[68]
[CITE[Bug 62485 - script type="text/ecmascript" is not recognized]] <https://bugzilla.mozilla.org/show_bug.cgi?id=62485>
([[名無しさん]] [sage])

[71]
[SAMP(HTML)[language=JScript.Encode]]、
[SAMP(HTML)[language=VBScript.Encode]]

他の [[ActiveScript]] でも使えるんだろうか?

* スクリプトブロックの型

[23] かつて [CODE(HTMLe)@en[[[script]]]] [[要素]]は[[状態]]として[DFN[[VAR[[RUBYB[スクリプトブロックの型]@en[the script block's type]]]]]]を持っていましたが、
現在では[[アルゴリズム]]内の[[変数]]にとどまっています。

;; [79] かつては [[JavaScript]] 以外の[[スクリプト言語]]が想定されていましたが、
最早 [[JavaScript]] 以外は想定する必要がないため、変更されました [SRC[>>22]]。

* メモ

[52] [[HTML]] では、 [CODE(HTMLe)[[[script]]]] 
要素を使って任意の[[スクリプト言語]]で書かれたコードを関連付けることができます。
他にもスクリプト言語を組入れることのできるマーク言語やスクリプトと関係するプロトコルなどがいくつも存在します。

このような仕組みには、特定のスクリプト言語に依存しているものもあれば、
任意のスクリプト言語を (少なくても枠組みとしては) 利用可能なものもあります。
HTML は後者に該当します。後者の場合は、必然的にスクリプト言語を識別する仕組みが必要となります。

この文書では、このスクリプト言語を識別するための仕組み
(その中でも特に、判定方法よりも識別子的プロトコル要素) 
について扱います。文書名は[CITE[スクリプトの媒体型]]ですが、
[[媒体型]] (インターネット媒体型) はそのような識別子の一種です。
しかし、ここでは媒体型に限らず、様々な方法に触れます。
また、[Q[スクリプト]]と一般に呼ばれるものの範囲を少々逸脱していても、
スクリプトを汎用的に扱う仕組みの中で処理されることがあるものであれば、
同様に扱うこととします。

[72]
[CITE@en[X3D Specification, ISO/IEC 19775-2:200x, Part 2, Annex A VRML97 Scripting Backwards Compatibility]] 
<http://www.web3d.org/x3d/specifications/ISO-IEC-19775-IS-X3DAbstractSpecification/Part02/vrml97.html#ECMAScriptMIMETypes>

[[X3D]] で [[VRML]] と互換性を保つための[[媒体型]]として
[CODE(MIME)@en[[[application/javascript]]]] と
[CODE(MIME)@en[[[application/x-javascript]]]]
が規定されています。
([[名無しさん]] [sage])

[73]
で、新しい [[X3D]] 用のは [CODE(MIME)@en[[[application/ecmascript]]]]
と [CODE(MIME)@en[[[application/x-ecmascript]]]]
([[名無しさん]] [sage])

[74]
>>73 の規定は
[CITE@en[ISO/IEC 19777-1:2005 -- X3D ECMAScript binding -- 4 Concepts]] 
<http://www.web3d.org/x3d/specifications/ISO-IEC-19777-1-FDIS-X3DLanguageBindings-ECMAScript/Part1/concepts.html#MIMEType>

([[名無しさん]] [sage])

[75]
[CITE@en[ISO/IEC 19777-1:2005 -- X3D ECMAScript binding -- 4 Concepts]] 
<http://www.web3d.org/x3d/specifications/ISO-IEC-19777-FDIS-X3DLanguageBindings/Part1/concepts.html#MIMEType>

([[名無しさん]] [sage])

[77]
[CITE[products and projects]] <http://www.terrainformatica.com/sciter/preface.whtm>

[CODE(MIME)@en[[[text/tiscript]]]]
([[名無しさん]])

[81]
[CITE[Dustin Long's homepage]] ([CODE[2007-04-14 09:27:31 +09:00]] 版) <http://www.cs.stevens.edu/~dlong/software/kamen/index.php>

> language="text/common-lisp"

(まま)
([[名無しさん]] [WEAK[2007-04-14 00:31:28 +00:00]])

[82]
[CITE@en[Mike Harsh's Blog : WPF/E Code Walkthrough]] ([CODE[2007-05-05 11:14:45 +09:00]] 版) <http://blogs.msdn.com/mharsh/archive/2006/03/28/563098.aspx>

[CODE(MIME)@en[[[text/xaml]]]]
([[名無しさん]])

[83]
>>82 [[XMLデータ島]]やるために [CODE(HTMLe)@en[[[script]]]]
を使うというのは、ものすごく時代に逆行していますね。
[[Shaping the Future of HTML]] Workshop を思い起こしますw
([[名無しさん]] [WEAK[2007-05-05 02:23:16 +00:00]])

[84]
[[type]]=[[text/xml-script]]
([[名無しさん]])

[85]
[CITE[seamonkey mozilla/content/base/src/nsScriptLoader.cpp]] ([CODE[2007-07-08 17:10:21 +09:00]] 版) <http://mxr.mozilla.org/seamonkey/source/content/base/src/nsScriptLoader.cpp#268>
([[名無しさん]])

[86]
[CITE[Bug 255895 &#8211; JS1.2 must die (was: Page with menus looks good in milestones and older releases; fails with recent nightlies)]] ([CODE[2007-07-25 22:11:02 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=255895>
([[名無しさん]])

[87]
[CITE[Bug 62485 &#8211; script type="text/ecmascript" is not recognized]] ([CODE[2007-07-25 22:05:45 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=62485>
([[名無しさん]])

[88]
[CITE[Bug 62485 &#8211; script type="text/ecmascript" is not recognized]] ([CODE[2007-07-25 22:05:45 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=62485>
([[名無しさん]])

[89]
[CITE[Bug 62485 &#8211; script type="text/ecmascript" is not recognized]] ([CODE[2007-07-25 22:05:45 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=62485>
([[名無しさん]])

[90]
[CITE[理想の結婚相手をみつけよう!【無料パートナー検索】]] ([CODE[2007-10-21 20:42:53 +09:00]] 版) <http://love.nozze.com/index.php/NOZ00188/kiss/>

>
[PRE(HTML bad example code)[
<script language="VBScript" type="text/vbscript">
<!-- // Flash Player ActiveX コントロールのバージョン情報を検出するには、Visual Basic ヘルパーが必要です
]PRE]

[[Flash]] の動作の [[IE]] とそれ以外の区別のために
[[VBScript]] を使っているようです。
([[名無しさん]])

[91]
[CITE@ja[オレオレ言語の MIME タイプ: Days on the Moon]] ([CODE[2008-05-11 15:39:16 +09:00]] 版) <http://nanto.asablo.jp/blog/2007/11/23/2453383>
([[名無しさん]])

[92]
[CITE[jquery2]] ([CODE[2006-09-02 15:58:30 +09:00]] 版) <http://ejohn.org/apps/jquery2/>

[PRE(HTML example code)[
  <script type="text/jquery">
    pre:
      css 'background' '#212121'
      css 'color' '#0F0'
      css 'padding' '10px'
      css 'font-size' '14px'
    body:
      prepend '<h1>jquery<sup>2</sup></h1>'
    input:first: click compile
    input:last: click run
  </script>
]PRE]

([[名無しさん]])

[93]
[CITE@ja[Logo on JavaScript]] ([CODE[2008-01-20 22:41:29 +09:00]] 版) <http://accelart.jp/shibuyajs/logo/logo.html>

[PRE(HTML example code)[
<script type="text/logo">
手順は 森の一部を描け :何回目 :長さ
	もし :何回目 = :緻密さ [
		前へ :長さ
		止まれ
	]
	森の一部を描け :何回目 + 1 :長さ * 0.6
	右へ 85
	森の一部を描け :何回目 + 1 :長さ / 3
	左へ 170
	森の一部を描け :何回目 + 1 :長さ / 3
	右へ 85
	森の一部を描け :何回目 + 1 :長さ * 0.35
終わり
手順は 森を描け :緻密さ
	ペンを上げろ
		位置は [ 270 -20 ] 
		左へ 90 
	ペンを下ろせ
	
	森の一部を描け 0 550
終わり
森を描け 5
</script>
]PRE]

([[名無しさん]])

[94]
[CITE[ブラウザで S 式をつかいたい>< - 女子高生ぷろぐらまーなお☆のブログ]] ([CODE[2008-04-23 23:36:48 +09:00]] 版) <http://d.hatena.ne.jp/jknaoya/20071116/1195201179>

[PRE(HTML example code)[
<script type="application/x-naoscheme">
    (define myalert (msg)
        (alert msg))
    (set! test "*_*")
    ((lambda (foo)
        (myalert foo)) test)
</script>
<script type="application/x-naoscheme">
    (add-event-listener window "load" (lambda (e)
        (alert e)
        (call document.body "appendChild" (call document "createTextNode" "こんにちは!"))
    ) false)
</script>
]PRE]

([[名無しさん]])

[96]
[[OSML]]:
[CODE@en[[[type]]="[[text/os-data]]"]],
[CODE@en[[[type]]="[[text/os-template]]"]]

[100] [CITE[Firefox 3 グラフィック関連]] ([[John Daggett]] 著, [TIME[2008-06-02 11:10:07 +09:00]] 版) <http://people.mozilla.com/~jdaggett/mozgumi08/>

>
[PRE(HTML example code)[
<script id="shader-vs" type="x-shader/x-vertex">
  // OpenGL ES 2.0 vertex shader
</script>

<script id="shader-fs" type="x-shader/x-fragment">
  // OpenGL ES 2.0 fragment shader
</script>
]PRE]

*XForms Actions

[98] [[XBL 2.0]] では [[XForms Actions]] を表す[[媒体型]]として
[DFN[[CODE(MIME)@en[[[application/x-xforms-actions+xml]]]]]]
を定義しています。

* XAML

[99] 
><script type="text/xaml"

* メモ

[130] 
>A [DFN@en[scripting language]] is a programming language that is used to manipulate, customise, and automate the facilities of an existing system. In such systems, useful functionality is already available through a user interface, and the scripting language is a mechanism for exposing that functionality to program control. In this way, the existing system is said to provide a host environment of objects and facilities, which completes the capabilities of the scripting language. A scripting language is intended for use by both professional and non-professional programmers. To accommodate non-professional programmers, some aspects of the language may be somewhat less strict.

;;[CITE[ECMAScript Language Specification (HTML version)]] ([TIME[2009-04-03 04:43:48 +09:00]] 版) <http://bclary.com/2004/11/07/#a-4>

[101] [CITE[IRC logs: freenode / #whatwg / 20090603]]
([TIME[2009-08-23 21:11:50 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20090603#l-101>

[102] [CITE@en[Mozilla Labs » Zaphod » Blog Archive » Zaphod 1.0 Released]]
( ([TIME[2010-10-10 13:11:32 +09:00]] 版))
<http://mozillalabs.com/zaphod/2010/09/16/6/>

[103] [CITE[672814 – Increase the set of script @type values that nsScriptLoader treats as JavaScript]]
( ([TIME[2012-05-26 12:30:44 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=672814#c6>

[104] [CITE[''''''[''''''whatwg'''''']'''''' The set of supported @type values for <script> is a bit odd]]
( ([TIME[2012-06-16 07:31:14 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-June/036417.html>

[105] [CITE@en[Web Applications 1.0 r7493     Be more strict about what <script type=''> handling should look like.]]
( ([TIME[2012-11-01 08:02:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7492&to=7493>

[106] [CITE[IRC logs: freenode / #whatwg / 20130828]]
( ([TIME[2013-09-04 20:49:29 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130828>

[108] [CITE@en[RDF 1.1 Turtle]]
( ([TIME[2014-03-07 08:53:19 +09:00]] 版))
<https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/index.html#h2_in-html>

[109] [CITE[XQuery in the Browser]]
( ([TIME[2014-07-26 00:12:39 +09:00]] 版))
<http://www.xqib.org/documentation.php>

[22] [CITE@en[Rewrite script execution on top of ES · whatwg/html@4891d18]] ([TIME[2015-12-22 18:40:03 +09:00]] 版) <https://github.com/whatwg/html/commit/4891d18aaf2df1d40aa61f467a5a10cfc19dd85d>

[115] [CITE@en[Add <script type="module"> and module resolution/fetching/evaluation · whatwg/html@cd1a9fb]]
([TIME[2016-01-21 22:15:43 +09:00]] 版)
<https://github.com/whatwg/html/commit/cd1a9fb1e83f7d0bc30be8b34ecdaf444a0b19a4>

[116] [CITE@en[add `+module` to mime type for `script type=module` · Issue #558 · whatwg/html]]
([TIME[2016-01-30 11:40:27 +09:00]] 版)
<https://github.com/whatwg/html/issues/558>

[153] [CITE@en[add `+module` to mime type for `script type=module` · Issue #558 · whatwg/html]]
([TIME[2016-06-27 13:44:04 +09:00]])
<https://github.com/whatwg/html/issues/558>

[154] [CITE@en[Add `application/javascript+module` mime to remove ambiguity · Issue #322 · tc39/ecma262]]
([TIME[2016-06-27 13:48:06 +09:00]])
<https://github.com/tc39/ecma262/issues/322>

[155] [CITE@en[Remove a nonsensical sentence in the definition of script types]]
([[domenic]]著, [TIME[2016-07-18 21:44:16 +09:00]])
<https://github.com/whatwg/html/commit/c9b8b1759bf86ae0ce2bd2bce46e082b1f555d64>

[FIG(quote)[
[FIGCAPTION[
[156] [CITE@en-US[Mitigating MIME Confusion Attacks in Firefox | Mozilla Security Blog]]
([TIME[2016-09-15 20:01:07 +09:00]])
<https://blog.mozilla.org/security/2016/08/26/mitigating-mime-confusion-attacks-in-firefox/>
]FIGCAPTION]

> Valid Content-Types for Scripts:
> – “application/javascript”
> – “application/x-javascript”
> – “application/ecmascript”
> – “application/json”
> – “text/ecmascript”
> – “text/javascript”
> – “text/json”

]FIG]


[160] [CITE@en[Fold request type into destination]]
([[annevk]]著, [TIME[2017-08-28 18:15:21 +09:00]])
<https://github.com/whatwg/fetch/commit/d7052e2b6d24d04caa2cea8ef664923ecdb1e35c>

[161] [CITE@en[Give <script type> its own place in the Attributes index]]
([[annevk]]著, [TIME[2017-09-08 01:43:05 +09:00]])
<https://github.com/whatwg/html/commit/1ed6d11a048ea81eaa839102b7aa136d88c9d320>

[162] [CITE@en[Attributes index is wrong for type · Issue #3020 · whatwg/html]]
([TIME[2017-09-08 14:45:13 +09:00]])
<https://github.com/whatwg/html/issues/3020>

[163] [CITE@en[Give <script type> its own place in the Attributes index by annevk · Pull Request #3023 · whatwg/html]]
([TIME[2017-09-08 14:45:20 +09:00]])
<https://github.com/whatwg/html/pull/3023>

[164] [CITE@en[Improve <style> and <script> processing and conformance]]
([[domenic]]著, [TIME[2017-09-14 18:42:48 +09:00]])
<https://github.com/whatwg/html/commit/9c612ac8641b5174849a2d3cb924fe662a8d3a09>

[165] [CITE@en[<style type>/<script type> and MIME type parameters · Issue #3022 · whatwg/html]]
([TIME[2017-09-19 22:45:22 +09:00]])
<https://github.com/whatwg/html/issues/3022>

[166] [CITE@en[Improve <style> and <script> processing and conformance by domenic · Pull Request #3024 · whatwg/html]]
([TIME[2017-09-19 22:46:54 +09:00]])
<https://github.com/whatwg/html/pull/3024>

[167] [CITE@en[Clarify prose around JavaScript MIME types]]
([[annevk]]著, [TIME[2017-09-18 23:25:34 +09:00]])
<https://github.com/whatwg/html/commit/470e168aaddc54e0abcfa302639870c299473c99>

[168] [CITE@en[Clarify "Scripting languages" · Issue #2301 · whatwg/html]]
([TIME[2017-09-19 22:54:21 +09:00]])
<https://github.com/whatwg/html/issues/2301>

[169] [CITE@en[WebAssembly is in scope · Issue #3037 · whatwg/html]]
([TIME[2017-09-19 22:57:30 +09:00]])
<https://github.com/whatwg/html/issues/3037>

[170] [CITE@en[Simplify and clarify prose around JavaScript MIME types by annevk · Pull Request #3045 · whatwg/html]]
([TIME[2017-09-19 22:58:16 +09:00]])
<https://github.com/whatwg/html/pull/3045>

[174] [CITE@en[Clarify the alternatives for <script language>]]
([[annevk]]著, [TIME[2017-10-06 05:03:02 +09:00]])
<https://github.com/whatwg/html/commit/e46cf1308f1e4cd9e328dcd0f1cf565f3b277307>

[175] [CITE@en[Clarify how to deal with <script language> by annevk · Pull Request #3095 · whatwg/html]]
([TIME[2017-10-06 12:07:20 +09:00]])
<https://github.com/whatwg/html/pull/3095>

[177] [CODE(MIME)@en[text/wreq]]

[178] [CITE@en[Editorial: update usage of the MIME Sniffing Standard]]
([[domenic]]著, [TIME[2018-02-17 03:42:58 +09:00]])
<https://github.com/whatwg/html/commit/fc82f4f8774a2e7e80f6c9477bd881f6c783b186>

[179] [CITE@en[Editorial: update usage of the MIME Sniffing Standard by domenic · Pull Request #3455 · whatwg/html]]
([TIME[2018-02-17 18:45:49 +09:00]])
<https://github.com/whatwg/html/pull/3455>

[FIG(quote)[
[FIGCAPTION[
[180] [CITE[旗標知識網:新聞聚合服務 - RSS]]
([TIME[2018-04-28 15:58:31 +09:00]])
<http://www.flag.com.tw/book/cento-5105.asp?bokno=F5474&id=58>
]FIGCAPTION]

> <script language="JavaScript1.2">mmLoadMenus();</script>

]FIG]

[182] 
[CODE[<[[object][<object>]] [[type][<object type>]]=[[text/x-scriptlet]]>]]


[FIG(quote)[
[FIGCAPTION[
[183] [CITE[HTMLへの埋め込み方法 - なでしこ3]]
([TIME[2020-12-18T10:06:00.000Z]])
<https://nadesi.com/doc3/index.php?HTML%E3%81%B8%E3%81%AE%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E6%96%B9%E6%B3%95>
]FIGCAPTION]

> 『<script type="なでしこ">...</script>』と記述すると、なでしこのプログラムを実行できます。

]FIG]
