IEで動作しないjQueryコード の質問に基づいて、HTMLドキュメントではtext/javascript
が使用されているため、Internet Explorerで理解できます。
しかし、いつapplication/javascript
を使用し、さらに重要なのは、なぜtext/javascript
の代わりに使用するのでしょうか?
理論的には、 RFC 4329 、application/javascript
による。
application
であると想定される理由は、型が読み取り可能か実行可能かには関係ありません。これは、汎用のcharset
パラメーターだけでなく、言語/タイプ自体によって設定されたカスタム文字セット決定メカニズムがあるためです。 text
のサブタイプは、プロキシによって別の文字セットに変換され、文字セットパラメータを変更できる必要があります。 JavaScriptには当てはまりません:
a。 RFCは、ユーザーエージェントがスクリプトでBOMスニッフィングを行ってタイプを判別する必要があると述べています(ただし、実際にブラウザーがこれを行うかどうかはわかりません)。
b。ブラウザは他の情報を使用します-ページのエンコードやsomeブラウザでscript charset
属性を含むなど、文字セットを決定します。そのため、リソースをトランスコードしようとしたプロキシはユーザーを破壊します。 (もちろん、実際には誰もとにかくトランスコーディングプロキシを使用しませんが、それは意図でした。)
そのため、ファイルの正確なバイトを保持する必要がありますexactly。これにより、技術的に文字ベースのapplication
ではなく、バイナリのtext
タイプになります。
同じ理由で、application/xml
はtext/xml
よりも正式に推奨されています。XMLには独自の帯域内文字セットシグナリングメカニズムがあります。そして、誰もがXMLのapplication
も無視します。
text/javascript
とtext/xml
は公式の正しいことではないかもしれませんが、互換性の理由で今日誰もが使用しているものがあり、それらが正しくない理由は実際にはまったく重要ではありません。
JavascriptのMIMEタイプの問題は、長年にわたって標準がなかったことです。これで、公式のMIMEタイプとしてapplication/javascriptができました。
しかし、実際には、ブラウザがタイプ自体を決定できるため、MIMEタイプはまったく問題ではありません。そのため、HTML5仕様では、type="text/javascript"
は不要になったと記載されています。
application
なぜなら、.js
--ファイルはユーザーが読みたいものではなく、実行すべきものだからです。
application-javascriptは使用する正しいタイプですが、IE6-8でサポートされていないため、text/javascriptで行き詰まってしまいます。妥当性を気にしない場合(HTML5を除く)、タイプを指定しないでください。