私の理解では、MIMEタイプはWebサーバーによって設定されます。 type="text/javascript
またはtype="text/css"
属性を追加する理由これは役に立たない無視された属性ではありませんか?
type="text/javascript"
この属性はオプションです。 Netscape 2以降、すべてのブラウザーのデフォルトのプログラミング言語はJavaScriptです。 XHTMLでは、この属性は必須であり不要です。 HTMLでは、それを省いた方が良いでしょう。ブラウザは何をすべきかを知っています。
W3Cは
language
属性を採用せず、代わりにMIMEタイプをとるtype
属性を優先しました。残念ながら、MIMEタイプは標準化されていないため、時々"text/javascript"
または"application/ecmascript"
または、他の何か。幸いなことに、すべてのブラウザは常にデフォルトのプログラミング言語としてJavaScriptを選択するため、常に<script>
。それは最小であり、ほとんどのブラウザで動作します。
娯楽のみを目的として、次の5つのスクリプトを試しました
<script type="application/ecmascript">alert("1");</script>
<script type="text/javascript">alert("2");</script>
<script type="baloney">alert("3");</script>
<script type="">alert("4");</script>
<script >alert("5");</script>
Chromeでは、スクリプト3(type="baloney"
)働いた。 IE8はスクリプト1(type="application/ecmascript"
)またはscript 3. 2つのブラウザーの広範なサンプルに基づくと、type
属性を安全に無視できるように見えますが、それを使用する場合は正当な(ブラウザー依存の)値を使用する方が適切です。
少なくともHTML 4.01およびXHTML 1(.1)では、<script>
要素のtype
属性は required であるため。
HTML 5 では、type
は不要になりました。
実際、HTMLソースでtext/javascript
を使用する必要がありますが、多くのサーバーはContent-type: application/javascript
でファイルを送信します。これらのMIMEタイプの詳細については、 RFC 4329 を参照してください。
text/javascript
を廃止としてマークし、application/javascript
の使用を推奨しているRFC 4329と、一部のブラウザーが<script>
を含むtype="application/javascript"
要素に驚いている現実との違いに注意してください。送信されるファイルのHTTP Content-typeヘッダーではなく、HTMLソースで)。最近、この矛盾についてWHATWGメーリングリストで議論がありました(HTML 5のtype
はtext/javascript
にデフォルト設定されています)。これらのメッセージを件名 で読みますRFC 4329?
http://lists.w3.org/Archives/Public/public-html/2009Apr/0195.html で提供されているボリス・ズバルスキー(Mozilla) = Geckoベースのブラウザが行うことを説明するために以下に繰り返される擬似コード:
if (@type not set or empty) {
if (@language not set or empty) {
// Treat as default script language; what this is depends on the
// content-script-type HTTP header or equivalent META tag
} else {
if (@language is one of "javascript", "livescript", "mocha",
"javascript1.0", "javascript1.1",
"javascript1.2", "javascript1.3",
"javascript1.4", "javascript1.5",
"javascript1.6", "javascript1.7",
"javascript1.8") {
// Treat as javascript
} else {
// Treat as unknown script language; do not execute
}
}
} else {
if (@type is one of "text/javascript", "text/ecmascript",
"application/javascript",
"application/ecmascript",
"application/x-javascript") {
// Treat as javascript
} else {
// Treat as specified (e.g. if pyxpcom is installed and
// python script is allowed in this context and the type
// is one that the python runtime claims to handle, use that).
// If we don't have a runtime for this type, do not execute.
}
}
ブラウザは、スクリプトまたはスタイルシートを要求する前に、スクリプト/スタイル言語を処理できるかどうかを判断できます(または、埋め込みスクリプト/スタイルの場合は、使用されている言語を識別します)。
ブラウザー空間で言語間の競争が激化した場合、これははるかに重要になりますが、VBScriptはIEを超えて、PerlScriptはIE =特定のプラグインですが、JSSSはそもそもかなりゴミでした。
HTML5のドラフトでは、属性をオプションにします。