[2] [DFN[[RUBYB[[[スクリプトが有効]]]@en[scripting is enabled]]]]、[DFN[[RUBYB[[[スクリプトが無効]]]@en[scripting is disabled]]]]とは、 [[スクリプト]]の実行の可否を指します。また[[HTML構文解析器]]には[RUBYB[[[スクリプトフラグ]]]@en[scripting flag]]があります。 * 仕様書 [REFS[ - [1] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-12-19 00:10:55 +09:00]] 版) - [8] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-12-19 00:10:55 +09:00]] 版) ]REFS] * 閲覧文脈と節点のスクリプト有効性 [3] [[閲覧文脈]]については、次の条件がすべて満たされた時[[スクリプトが有効]]となり、 そうでないとき[[スクリプトが無効]]となります [SRC[>>1]]。 [FIG[ - [4] [[利用者エージェント]]が[[スクリプト]]に対応している - [5] [[利用者]]がその時点で当該[[閲覧文脈]]について[[スクリプト]]を無効にしていない - [6] [[閲覧文脈]]の[[活性文書]]の[[活性砂箱化フラグ集合]]において[[砂箱化スクリプト閲覧文脈フラグ]]が設定されていない ]FIG] ;; [10] [[砂箱化スクリプト閲覧文脈フラグ]]は [CODE(HTMLe)@en[[[iframe]]]] [[要素]]の [CODE(HTMLa)@en[[[sandbox]]]] [[属性]]や [[CSP]] の [CODE(HTTP)@en[[[sandbox]]]] [[指令]]によって設定できます。 [7] [[節点]]については、[[節点文書]]が関連付けられた[[閲覧文脈]]を持ち、 その[[閲覧文脈]]について[[スクリプトが有効]]であるなら[[スクリプトが有効]]であり、 そのような[[閲覧文脈]]がないか、[[閲覧文脈]]で[[スクリプトが無効]]なら、[[スクリプトが無効]]です [SRC[>>1]]。 [13] スクリプトの有効性は次の場面に影響します。 [FIG[ - 無効なら、 [CODE(HTMLe)@en[[[script]]]] [[要素]]による[[スクリプト]]の処理はされません - 有効なら、 [[create a script]] で[[スクリプト]]が実行されます - 有効なら、[[イベントハンドラー内容属性]]が設定された時に実際に[[イベントハンドラー]]として設定されます - 有効なら、 [[prepare to run a callback]] で[[コールバック]]が実行されます - [CODE(HTMLe)@en[[[img]]]] [[要素]]の [CODE(HTMLa)@en[[[src]]]] [[属性]]が設定された時、有効なら直ちに画像の取得が開始されますが、無効なら必要になるまで遅延できます - 有効なら [CODE(HTMLe)@en[[[noscript]]]] はなにも[[表現]]せず、無効なら[[子供]]を[[表現]]します - [CODE(HTMLe)@en[[[noscript]]]] の[[内容モデル]]は有効か否かにより変更します - [CODE(HTMLe)@en[[[noscript]]]] [[要素]]の[[直列化]]の方法に影響します - 有効なら [CODE(HTMLe)@en[[[noscript]]]] [[要素]]は [CODE(CSS)@en[[[display]]: [[none]]]] となります - [CODE(HTMLe)@en[[[canvas]]]] [[要素]]が[[埋め込み内容]]を[[表現]]するか[[フォールバック内容]]を[[表現]]するかの決定に関与します - 無効なら、[[媒体要素]]に [CODE(HTMLa)@en[[[controls]]]] [[属性]]がなくても[[利用者に利用者インターフェイスを晒す]]べきです ]FIG] * 構文解析器のスクリプトフラグ [9] [[HTML構文解析器]]が作られた時点において[[構文解析器]]と関連付けられた[[文書節点]]の[[スクリプトが有効]]なら、 [[構文解析器]]の[[スクリプトフラグ]]が「有効」に設定されます。そうでなければ「無効」に設定されます。 [SRC[>>8]] ;; [11] [[閲覧文脈]]や[[節点]]のスクリプトの有効性は動的に変更されることがありますが、 [[構文解析器]]の[[スクリプトフラグ]]は一度設定されたら変更されません。 ですから、[CODE(HTMLe)@en[[[noscript]]]] [[要素]]の中身が構文解析された[[文書]]で[[スクリプト]]が実行されることもあり得ます。 ;; [12] このフラグは [[HTML構文解析器]]には存在しますが、 [[XML構文解析器]]には存在しません。 [[スクリプト]]の実行自体は[[閲覧文脈]]の[[スクリプトが有効]]かどうかにより制御されます。 [15] [[スクリプトフラグ]]は次の場面に影響します。 [FIG[ - [[HTML文書]]の構文解析における [CODE(HTMLe)@en[[[noscript]]]] [[開始タグ]]、[[終了タグ]]の処理 - [CODE(HTMLe)@en[[[noscript]]]] [[要素]]を[[文脈]]とした[[HTML素片構文解析アルゴリズム]]の処理 ]FIG] * 関連 [14] [CODE(DOMa)@en[[[innerHTML]]]] や [CODE(DOMi)@en[[[XSLTProcessor]]]] や、一旦実行された [CODE(HTMLe)@en[[[script]]]] [[要素]]では[[スクリプト]]が実行されませんが、これは [["already-started" flag]] によって処理されるので、[[スクリプトが有効]]か否かとは別です。