【HTML】「script」タグの「type=”text/javascript”」の指定について

今回は、HTML(Hypertext Markup Language)で「script」タグの「type="text/javascript"」属性の指定方法について紹介していきます。

スポンサーリンク

指定方法

「script」タグの「type」属性の指定方法の例としては、次のようになります。

指定する場合は、次のようなコードになります。

<script type="text/javascript">
...
</script>

指定しない場合は、次のようなコードになります。

<script>
...
</script>

指定方法が違う理由

指定方法が違う理由は、「HTML」のバージョンにより仕様が異なるためです。

HTML5以前(HTML4.01など)

「HTML」に次のような宣言がある場合は、「HTML」のバージョンは「4.01」になります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

「HTML」のバージョンが「4.01」の場合は、「scirpt」タグの「type」属性は必須でした。引用した内容に「type %ContentType; #REQUIRED(必須)」と記載されています。

<!ELEMENT SCRIPT - - %Script; -- script statements -->
<!ATTLIST SCRIPT
charset %Charset; #IMPLIED -- char encoding of linked resource --
type %ContentType; #REQUIRED -- content type of script language --
src %URI; #IMPLIED -- URI for an external script --
defer (defer) #IMPLIED -- UA may defer execution of script --
>

https://www.w3.org/TR/html40/interact/scripts.html#h-18.2.1

詳細については、引用元の内容も確認してみてください。

HTML5

「HTML」に次のような宣言がある場合は、「HTML」のバージョンは「5」になります。

<!DOCTYPE html>

「HTML」のバージョンが「5」の場合は、「script」タグの「type」は必須ではなくなりました。省略することも推奨されているような記載になっています。引用した内容に「Omitting the attribute(属性を省略する)」と記載されています。

Omitting the attribute, setting it to the empty string, or setting it to a JavaScript MIME type essence match, means that the script is a classic script, to be interpreted according to the JavaScript Script top-level production. Classic scripts are affected by the async and defer attributes, but only when the src attribute is set. Authors should omit the type attribute instead of redundantly setting it.

https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type

詳細については、引用元の内容も確認してみてください。

まとめ

「script」タグの「type」属性は、「HTML」のバージョンにより指定方法が異なります。

参考資料