web-dev-qa-db-ja.com

text / javascriptの代わりにJavaScript MIMEタイプapplication / javascriptを使用する場合

IEで動作しないjQueryコード の質問に基づいて、HTMLドキュメントではtext/javascriptが使用されているため、Internet Explorerで理解できます。

しかし、いつapplication/javascriptを使用し、さらに重要なのは、なぜtext/javascriptの代わりに使用するのでしょうか?

151
Mark Baijens

理論的には、 RFC 4329application/javascriptによる。

applicationであると想定される理由は、型が読み取り可能か実行可能かには関係ありません。これは、汎用のcharsetパラメーターだけでなく、言語/タイプ自体によって設定されたカスタム文字セット決定メカニズムがあるためです。 textのサブタイプは、プロキシによって別の文字セットに変換され、文字セットパラメータを変更できる必要があります。 JavaScriptには当てはまりません:

a。 RFCは、ユーザーエージェントがスクリプトでBOMスニッフィングを行ってタイプを判別する必要があると述べています(ただし、実際にブラウザーがこれを行うかどうかはわかりません)。

b。ブラウザは他の情報を使用します-ページのエンコードやsomeブラウザでscript charset属性を含むなど、文字セットを決定します。そのため、リソースをトランスコードしようとしたプロキシはユーザーを破壊します。 (もちろん、実際には誰もとにかくトランスコーディングプロキシを使用しませんが、それは意図でした。)

そのため、ファイルの正確なバイトを保持する必要がありますexactly。これにより、技術的に文字ベースのapplicationではなく、バイナリのtextタイプになります。

同じ理由で、application/xmltext/xmlよりも正式に推奨されています。XMLには独自の帯域内文字セットシグナリングメカニズムがあります。そして、誰もがXMLのapplicationも無視します。

text/javascripttext/xmlは公式の正しいことではないかもしれませんが、互換性の理由で今日誰もが使用しているものがあり、それらが正しくない理由は実際にはまったく重要ではありません。

237
bobince

JavascriptのMIMEタイプの問題は、長年にわたって標準がなかったことです。これで、公式のMIMEタイプとしてapplication/javascriptができました。

しかし、実際には、ブラウザがタイプ自体を決定できるため、MIMEタイプはまったく問題ではありません。そのため、HTML5仕様では、type="text/javascript"は不要になったと記載されています。

17
Harmen

applicationなぜなら、.js--ファイルはユーザーが読みたいものではなく、実行すべきものだからです。

5
thejh

application-javascriptは使用する正しいタイプですが、IE6-8でサポートされていないため、text/javascriptで行き詰まってしまいます。妥当性を気にしない場合(HTML5を除く)、タイプを指定しないでください。

1
Radu