目次に戻る

script要素:HTML Living Standard各要素別メモ

概要

カテゴリー
配置できる場所
内容モデル
  • src属性がない場合は、type属性で指定するスクリプト言語等のコードテキスト
  • src属性がある場合は、であるか、スクリプト仕様に合致するテキストtype属性で指定するスクリプト言語におけるコメント文など)かのいずれか。
  • いずれにしても書ける文字等に制限がある(当該制限を満たす最も簡単で安全な方法は、<!--<\!--として、<script<\scriptとして、</script<\/scriptとして、常にエスケープすることである)。
属性
  • グローバル属性
  • src→外部スクリプトリソースを示すURL
  • asyncブーリアン属性。指定されれば、スクリプトは利用可能になった時点で非同期的に実行される。
  • deferブーリアン属性。指定されれば、スクリプトHTML文書全体の解釈が終了したときに実行される。
  • crossorigin→値は下記のとおりで、も可。の場合は、anonymousと同等。デフォルトは、anonymous。別オリジン(→別ドメインなど)からの読み込みに対して、ユーザー認証情報の要否を指定する。
    • anonymousユーザー認証情報を求めない。
    • use-credentialsユーザー認証情報を求める。
  • integrityサブリソースの改竄検証のためのハッシュ値。詳細は、Subresource Integrityを参照。
  • nomoduleブーリアン属性。指定されれば、モジュールスクリプトサポートするユーザーエージェントで当該スクリプトが実行されないようにする。
  • referrerpolicy→値は下記のとおり。アクセス又はリソース読み込みのときのリファラーヘッダに関するポリシーを指定する。詳細は、Referrer Policyを参照。
    • no-referrerリファラーヘッダを削除し、リファラー情報を送信しない。
    • no-referrer-when-downgradeTLSで保護されたクライアントから信用に値し得ないURLへの送信の際は、リファラーヘッダを削除し、リファラー情報を送信しない。その他の場合は、リファラー情報を全部送信する。
    • same-origin→非同一オリジンからの要請に対しては、リファラーヘッダを削除し、リファラー情報を送信しない。同一オリジンからの要請に対しては、リファラー用に削った全部情報を送信する。
    • originドメイン部分のみをリファラー情報として送信する(例:「https://example.com/example.html」からのアクセス→「https://example.com/」のみを送信)。
    • strict-originTLSで保護されたクライアントから信用に値し得ないURLへの送信の際は、リファラーヘッダを削除し、リファラー情報を送信しない。その他の場合は、ドメイン部分のみをリファラー情報として送信する。
    • origin-when-cross-origin→非同一オリジンからの要請に対しては、ドメイン部分のみをリファラー情報として送信する。同一オリジンからの要請に対しては、リファラー用に削った全部情報を送信する。
    • strict-origin-when-cross-originTLSで保護されたクライアントから信用に値し得ないURLへの送信の際は、リファラーヘッダを削除し、リファラー情報を送信しない。その他の場合で、非同一オリジンからの要請に対しては、ドメイン部分のみをリファラー情報として送信する。その他の場合で、同一オリジンからの要請に対しては、リファラー用に削った全部情報を送信する。
    • unsafe-urlリファラー用に削った全部情報を送信する。
  • typemoduleモジュールスクリプト)、又は、スクリプトデータブロックの言語・形式を指定するMIME typeデフォルトは、text/javascriptクラシックスクリプト(=ジャバスクリプト類)を示すもの(該当するものは下記のとおり)以外のMIME typeを指定した場合は、データブロックと解釈される。なお、この属性値クラシックスクリプト(=ジャバスクリプト類)を示すMIME type(該当するものは下記のとおり)を指定することとなってしまう場合は、この属性は省略すべきである。
    • application/ecmascript
    • application/javascript
    • application/x-ecmascript
    • application/x-javascript
    • text/ecmascript
    • text/javascript
    • text/javascript1.0
    • text/javascript1.1
    • text/javascript1.2
    • text/javascript1.3
    • text/javascript1.4
    • text/javascript1.5
    • text/jscript
    • text/livescript
    • text/x-ecmascript
    • text/x-javascript
  • src属性がない場合は、asyncdeferintegrityの各属性は指定してはならない。
  • type属性値moduleの場合は、defernomoduleの各属性は指定してはならない。
  • データブロックである場合は、crossoriginsrcasyncdeferintegritynomodulereferrerpolicyの各属性は指定してはならない。
  • async属性defer属性の両方が指定されていた場合は、async属性の効果が優先。ただし、asyc属性サポートしないブラウザに対しては、defer属性の効果が発動する。
  • これらの属性スクリプトで操作しても何も起こらない。

W3C : HTML5.3type属性値moduleの場合は、integrity属性は指定してはならないとされていた。

W3C : HTML5.3:下記の属性が存在してなかった。

  • nomodule
  • referrerpolicy
HTML構文におけるタグの省略
  • 省略不可。
WAI-ARIA
  • すべてのrole及びすべてのaria-*属性は指定不可。
視覚系ブラウザデフォルトとして期待されるCSS

  script {display: none;}
  
準拠チェッカーに対する規定
  • script要素に廃止されたlanguage属性が指定されていても、その属性値JavaScriptであり、かつ、type属性が指定されてないか又はtype属性値text/javascriptである限り、エラーとはせずに警告にとどめることが許容される。
  • script要素に廃止されたcharset属性が指定されていても、その属性値utf-8である場合に限り、エラーとはせずに警告にとどめることが許容される。
  • script要素に省略すべきtype属性が指定されていても、その属性値ジャバスクリプト類を示すMIME typeである場合に限り、エラーとはせずに警告にとどめることが許容される。
ユーザーエージェントに対する特記事項
  • データブロック以外の場合で、かつ、src属性が指定されている場合においては、廃止されたcharset属性が指定されたなら、当該charset属性は読み込むスクリプト文字エンコーディングを判定するものとして作用する。
意味・用法

この要素は、HTML文書に動的スクリプトや(スクリプトで利用されるだろう)データブロックを組み込むことを、著者に許す。

閲覧者に対しては、内容は表示されない。

アクセシビリティ関連

私見・補足

一般的なHTML文書では、スクリプトが機能しなくても基本的な情報は読めるようにしておくのが基本である。

コードテキスト内容とする場合は、style要素によるスタイルシートの埋め込みと同様に、コードテキストコメントの中に入れるという方法やコードテキストCDATAセクションとする方法もあるが、問題点も同様である。