メインコンテンツへスキップ

noscript要素


1.仕様

NOSCRIPT要素 は、
スクリプトが有効な場合は
何も表さず、
スクリプトが無効な場合は
その子(内容)を表します。

noscript

スクリプトが無効な場合の為のマークアップ (Salternate content container for non script-based rendering)

種類

通常要素

使用できるコンテキスト
  • head要素に 0個以上
  • フレージングコンテンツを受け入れる要素

head要素に 0個以上を そのコンテンツとして、使用できます。
フレージングコンテンツを受け入れる要素のコンテンツとして、使用できます。

フレージングコンテンツを受け入れる要素は、h1要素, h2要素, h3要素, h4要素, h5要素, h6要素, p要素, pre要素, output要素, progress要素, meter要素, label要素, datalist要素, body要素, section要素, nav要素, aside要素, article要素, header要素, footer要素, main要素, address要素, li要素, dt要素, dd要素, caption要素, th要素, td要素, form要素, fieldset要素, search要素, blockquote要素, figure要素, figcaption要素, div要素, dialog要素, abbr要素, b要素, bdi要素, bdo要素, cite要素, code要素, data要素, dfn要素, em要素, i要素, kbd要素, mark要素, q要素, s要素, samp要素, small要素, span要素, strong要素, sub要素, sup要素, u要素, var要素 です。

ただし、先祖に noscript要素がない場合に限ります。

コンテンツモデル
  • head要素の子である場合、link要素またはstyle要素またはmeta要素のいずれかを0個以上
  • 透過的コンテンツ

head要素の子である場合、link要素またはstyle要素またはmeta要素のいずれかを0個以上が配置できます。
一部の要素は透明であると説明されており、そのコンテンツモデルの説明には「transparent」がある。透明な要素のコンテンツモデルは、その親要素のコンテンツモデルから派生します。「transparent」であるコンテンツモデルの部分で要求される要素は、透明な要素がそれ自身を見つける透明な要素の親のコンテンツモデルの部分で要求される要素と同じ要素です。

head要素内の場合、任意の順序で、0 個以上の link要素, 0 個以上の style要素、0 個以上の meta要素が含まれます。

head要素内ではない場合、透明(transparent) ですが、noscript要素の子孫があってはなりません。(透明な要素のコンテンツモデルは、その親要素のコンテンツモデルから派生します。コンテンツモデルの「透明」な部分に必要な要素は、その親のコンテンツモデルの部分に必要な要素と同じです。)

タグの省略

どちらのタグも省略できません。

コンテンツ属性

グローバル属性のみ

DOM インターフェイス
HTMLElement
  1. [Exposed=Window]
  2. interface HTMLElement : Element {
  3. [HTMLConstructor] constructor();
  4.  
  5. // metadata attributes
  6. [CEReactions] attribute DOMString title;
  7. [CEReactions] attribute DOMString lang;
  8. [CEReactions] attribute boolean translate;
  9. [CEReactions] attribute DOMString dir;
  10.  
  11. // user interaction
  12. [CEReactions] attribute (boolean or unrestricted double or DOMString)? hidden;
  13. [CEReactions] attribute DOMString inert;
  14. undefined click();
  15. [CEReactions] attribute DOMString accessKey;
  16. readonly attribute DOMString accessKeyLabel;
  17. [CEReactions] attribute boolean draggable;
  18. [CEReactions] attribute boolean spellcheck;
  19. [CEReactions] attribute DOMString writingSuggestions;
  20. [CEReactions] attribute DOMString autocapitalize;
  21.  
  22. [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText;
  23. [CEReactions] attribute [LegacyNullToEmptyString] DOMString outerText;
  24.  
  25. ElementInternals attachInternals();
  26.  
  27. // The popover API
  28. undefined showPopover();
  29. undefined hidePopover();
  30. boolean togglePopover(optional boolean force);
  31. [CEReactions] attribute DOMString? popover;
  32. };
  33.  
  34. HTMLElement includes GlobalEventHandlers;
  35. HTMLElement includes ElementContentEditable;
  36. HTMLElement includes HTMLOrSVGElement;
Element
  1. [Exposed=Window]
  2. interface Element : Node {
  3. readonly attribute DOMString? namespaceURI;
  4. readonly attribute DOMString? prefix;
  5. readonly attribute DOMString localName;
  6. readonly attribute DOMString tagName;
  7.  
  8. [CEReactions] attribute DOMString id;
  9. [CEReactions] attribute DOMString className;
  10. [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
  11. [CEReactions, Unscopable] attribute DOMString slot;
  12.  
  13. boolean hasAttributes();
  14. [SameObject] readonly attribute NamedNodeMap attributes;
  15. sequence<DOMString> getAttributeNames();
  16. DOMString? getAttribute(DOMString qualifiedName);
  17. DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
  18. [CEReactions] undefined setAttribute(DOMString qualifiedName, DOMString value);
  19. [CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
  20. [CEReactions] undefined removeAttribute(DOMString qualifiedName);
  21. [CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName);
  22. [CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
  23. boolean hasAttribute(DOMString qualifiedName);
  24. boolean hasAttributeNS(DOMString? namespace, DOMString localName);
  25.  
  26. Attr? getAttributeNode(DOMString qualifiedName);
  27. Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName);
  28. [CEReactions] Attr? setAttributeNode(Attr attr);
  29. [CEReactions] Attr? setAttributeNodeNS(Attr attr);
  30. [CEReactions] Attr removeAttributeNode(Attr attr);
  31.  
  32. ShadowRoot attachShadow(ShadowRootInit init);
  33. readonly attribute ShadowRoot? shadowRoot;
  34.  
  35. Element? closest(DOMString selectors);
  36. boolean matches(DOMString selectors);
  37. boolean webkitMatchesSelector(DOMString selectors); // legacy alias of .matches
  38.  
  39. HTMLCollection getElementsByTagName(DOMString qualifiedName);
  40. HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
  41. HTMLCollection getElementsByClassName(DOMString classNames);
  42.  
  43. [CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // legacy
  44. undefined insertAdjacentText(DOMString where, DOMString data); // legacy
  45. };
GlobalEventHandlers
  1. interface mixin GlobalEventHandlers {
  2. attribute EventHandler onabort;
  3. attribute EventHandler onauxclick;
  4. attribute EventHandler onbeforeinput;
  5. attribute EventHandler onbeforematch;
  6. attribute EventHandler onbeforetoggle;
  7. attribute EventHandler onblur;
  8. attribute EventHandler oncancel;
  9. attribute EventHandler oncanplay;
  10. attribute EventHandler oncanplaythrough;
  11. attribute EventHandler onchange;
  12. attribute EventHandler onclick;
  13. attribute EventHandler onclose;
  14. attribute EventHandler oncontextlost;
  15. attribute EventHandler oncontextmenu;
  16. attribute EventHandler oncontextrestored;
  17. attribute EventHandler oncopy;
  18. attribute EventHandler oncuechange;
  19. attribute EventHandler oncut;
  20. attribute EventHandler ondblclick;
  21. attribute EventHandler ondrag;
  22. attribute EventHandler ondragend;
  23. attribute EventHandler ondragenter;
  24. attribute EventHandler ondragleave;
  25. attribute EventHandler ondragover;
  26. attribute EventHandler ondragstart;
  27. attribute EventHandler ondrop;
  28. attribute EventHandler ondurationchange;
  29. attribute EventHandler onemptied;
  30. attribute EventHandler onended;
  31. attribute OnErrorEventHandler onerror;
  32. attribute EventHandler onfocus;
  33. attribute EventHandler onformdata;
  34. attribute EventHandler oninput;
  35. attribute EventHandler oninvalid;
  36. attribute EventHandler onkeydown;
  37. attribute EventHandler onkeypress;
  38. attribute EventHandler onkeyup;
  39. attribute EventHandler onload;
  40. attribute EventHandler onloadeddata;
  41. attribute EventHandler onloadedmetadata;
  42. attribute EventHandler onloadstart;
  43. attribute EventHandler onmousedown;
  44. [LegacyLenientThis] attribute EventHandler onmouseenter;
  45. [LegacyLenientThis] attribute EventHandler onmouseleave;
  46. attribute EventHandler onmousemove;
  47. attribute EventHandler onmouseout;
  48. attribute EventHandler onmouseover;
  49. attribute EventHandler onmouseup;
  50. attribute EventHandler onpaste;
  51. attribute EventHandler onpause;
  52. attribute EventHandler onplay;
  53. attribute EventHandler onplaying;
  54. attribute EventHandler onprogress;
  55. attribute EventHandler onratechange;
  56. attribute EventHandler onreset;
  57. attribute EventHandler onresize;
  58. attribute EventHandler onscroll;
  59. attribute EventHandler onscrollend;
  60. attribute EventHandler onsecuritypolicyviolation;
  61. attribute EventHandler onseeked;
  62. attribute EventHandler onseeking;
  63. attribute EventHandler onselect;
  64. attribute EventHandler onslotchange;
  65. attribute EventHandler onstalled;
  66. attribute EventHandler onsubmit;
  67. attribute EventHandler onsuspend;
  68. attribute EventHandler ontimeupdate;
  69. attribute EventHandler ontoggle;
  70. attribute EventHandler onvolumechange;
  71. attribute EventHandler onwaiting;
  72. attribute EventHandler onwebkitanimationend;
  73. attribute EventHandler onwebkitanimationiteration;
  74. attribute EventHandler onwebkitanimationstart;
  75. attribute EventHandler onwebkittransitionend;
  76. attribute EventHandler onwheel;
  77. };
ElementContentEditable
  1. interface mixin ElementContentEditable {
  2. [CEReactions] attribute DOMString contentEditable;
  3. [CEReactions] attribute DOMString enterKeyHint;
  4. readonly attribute boolean isContentEditable;
  5. [CEReactions] attribute DOMString inputMode;
  6. };
HTMLOrSVGElement
  1. interface mixin HTMLOrSVGElement {
  2. [SameObject] readonly attribute DOMStringMap dataset;
  3. attribute DOMString nonce; // intentionally no [CEReactions]
  4.  
  5. [CEReactions] attribute boolean autofocus;
  6. [CEReactions] attribute long tabIndex;
  7. undefined focus(optional FocusOptions options = {});
  8. undefined blur();
  9. };
ARIA in HTML
暗黙的="No" ARIAロール="No" aria-* 属性="No"

暗黙的な ARIAセマンティクスがありませんが、意味はあり、この意味は、ARIA によって提供されず、ARIA のユーザーに公開されていないロール、状態、プロパティで表現される可能性があります。

作成者は、暗黙的な ARIAセマンティクス, または HTML要素のネイティブセマンティクスを上書きしてはいけません。

記述できる aria-* 属性はありません。

レンダリング
ボックスを生成しない
非表示の要素
  1. @media (scripting) {
  2. noscript {
  3. display: none !important;
  4. }
  5. }

CSS を大雑把に読むと、 要素とその子孫はボックスやテキストシーケンスを生成しません。 などになります。

説明
noscript要素は、スクリプトが有効な場合は何も表さず、スクリプトが無効な場合はその子を表します。

noscript要素は、これは、ドキュメントの解析方法に影響を与える事により、スクリプトをサポートするユーザーエージェントとスクリプトをサポートしないユーザーエージェントに異なるマークアップを提示する為に使用されます。

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>noscript要素の例 - (Example of noscript element) | 離珠のHTMLでしぃ!</title>
  6. <noscript>
  7. <link rel="stylesheet" href="./excss01.css">
  8. </noscript>
  9. </head>
  10. <body>
  11. <h1>noscript要素の例</h1>
  12. <p>この例の noscript要素は、スクリプトが無効な場合に ./excss01.css というスタイルシートをインポートすると指定してる link要素を有効としています。</p>
  13. </body>
  14. </html>

このサンプルへのリンクです。
(./exnoscript.htm)

JSONデータ
JSON形式での、データのイメージです。
  1. {
  2. "noscript": {
  3. "check": "2024-09-01",
  4. "group": "Metadata",
  5. "element": "- - (%Transparent;)* -- alternate content container for non script-based rendering. (Normal elements.) [Metadata|Flow|Phrasing] --",
  6. "attlist": {"%Global;": ""},
  7. "comment": "スクリプトが無効な場合の為のマークアップ (Salternate content container for non script-based rendering)",
  8. "point": "スクリプトが有効な場合は何も表さず、スクリプトが無効な場合はその子を表します。",
  9. "description": "これは、ドキュメントの解析方法に影響を与える事により、スクリプトをサポートするユーザーエージェントとスクリプトをサポートしないユーザーエージェントに異なるマークアップを提示する為に使用されます。",
  10. "kind": "Normal",
  11. "categories": [
  12. "Metadata",
  13. "Flow",
  14. "Phrasing",
  15. ],
  16. "used": [
  17. "HEAD (NOSCRIPT)*",
  18. "parent (%Phrasing)*",
  19. ],
  20. "usedsupplement": "ただし、先祖に noscript要素がない場合に限ります。",
  21. "contentmodel": [
  22. "HEAD NOSCRIPT (LINK|STYLE|META)*",
  23. "%Transparent",
  24. ],
  25. "contentmodelsupplement": [
  26. "head要素内の場合、任意の順序で、0 個以上の link要素, 0 個以上の style要素、0 個以上の meta要素が含まれます。",
  27. "head要素内ではない場合、透明(transparent) ですが、noscript要素の子孫があってはなりません。(透明な要素のコンテンツモデルは、その親要素のコンテンツモデルから派生します。コンテンツモデルの「透明」な部分に必要な要素は、その親のコンテンツモデルの部分に必要な要素と同じです。)",
  28. ],
  29. "tag": [
  30. "-",
  31. "-",
  32. ],
  33. "attributes": "Global",
  34. "dominterface": "HTMLElement",
  35. "rendering": "Scripting",
  36. "reference": [
  37. {
  38. "title": "HTML Living Standard. 4.12.2 The noscript element.",
  39. "href": "https://html.spec.whatwg.org/multipage/scripting.html#the-noscript-element",
  40. "heading": "HTML Living Standard. 4.12.2 The noscript element",
  41. "sub": "Last Updated 27 August 2024",
  42. },
  43. {
  44. "title": "HTML Living Standard. 15 Rendering 15.3.1 Hidden elements.",
  45. "href": "https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements",
  46. "heading": "HTML Living Standard. 15 Rendering 15.3.1 Hidden elements",
  47. "sub": "Last Updated 27 August 2024",
  48. },
  49. {
  50. "title": "HTML 5.2 W3C Recommendation. 4.12.2 The noscript element. W3C Recommendation, 14 December 2017.",
  51. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/semantics-scripting.html#the-noscript-element",
  52. "heading": "HTML 5.2 W3C 勧告. 4.12.2 The noscript element",
  53. "sub": "W3C勧告、2017年12月14日",
  54. },
  55. {
  56. "title": "HTML 5.2 W3C Recommendation. 10.3.1. Hidden elements.",
  57. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/rendering.html#hidden-elements",
  58. "heading": "HTML 5.2 W3C 勧告. 10.3.1. Hidden elements",
  59. "sub": "W3C勧告、2017年12月14日",
  60. },
  61. {
  62. "title": "HTML 5.1 W3C Recommendation. 4.12.2 The noscript element. W3C Recommendation, 1 November 2016.",
  63. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/semantics-scripting.html#the-noscript-element",
  64. "heading": "HTML 5.1 W3C 勧告. 4.12.2 The noscript element",
  65. "sub": "W3C勧告、2016年11月1日",
  66. },
  67. {
  68. "title": "HTML 5.1 W3C Recommendation. 10.3.1. Hidden elements. W3C Recommendation, 1 November 2016.",
  69. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/rendering.html#hidden-elements",
  70. "heading": "HTML 5.1 W3C 勧告. 10.3.1. Hidden elements",
  71. "sub": "W3C勧告、2016年11月1日",
  72. },
  73. {
  74. "title": "HTML 5 W3C Recommendation. 4.12.2 The noscript element. W3C Recommendation, 28 October 2014.",
  75. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/scripting-1.html#the-noscript-element",
  76. "heading": "HTML 5 W3C 勧告. 4.12.2 The noscript element",
  77. "sub": "W3C勧告、2014年10月28日",
  78. },
  79. {
  80. "title": "HTML 5 W3C Recommendation. 10.3.1. Hidden elements. W3C Recommendation, 28 October 2014.",
  81. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/rendering.html#hidden-elements",
  82. "heading": "HTML 5 W3C 勧告. 10.3.1. Hidden elements",
  83. "sub": "W3C勧告、2014年10月28日",
  84. },
  85. {
  86. "title": "HTML 4.01 Specification W3C Recommendation. 18.3.1 Scripts: The NOSCRIPT element. W3C Recommendation 24 December 1999.",
  87. "href": "https://www.w3.org/TR/html401/interact/scripts.html#h-18.3.1",
  88. "heading": "HTML 4.01 Specification W3C 勧告. 18.3.1 Scripts: The NOSCRIPT element",
  89. "sub": "W3C勧告1999年12月24日",
  90. },
  91. {
  92. "title": "MDN Web Docs. HTML <noscript>: The Noscript element.",
  93. "href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/noscript",
  94. "heading": "<noscript>: スクリプト無し要素 - HTML: ハイパーテキストマークアップ言語 | MDN",
  95. },
  96. ],
  97. "version": {
  98. "first": "HTML4",
  99. "latest": "HTML Living Standard",
  100. },
  101. }
  102. }

注意: 簡易に描画する為に、各項目の後ろに , を付与しています。JSON の形式では、末尾の項目の後には , は付けません。

最終確認日

2024-09-01


2.使用できるコンテキスト

noscript要素 は、
メタデータコンテンツ,
フレージングコンテンツを
受け入れる要素に
配置できます。

noscript要素が使用できるコンテキスト(Context文脈)は、メタデータコンテンツ, フレージングコンテンツを受け入れる要素コンテンツとしてです。ただし祖先にnoscript要素がない場合に限ります。

別の言い方で細かく言うと、noscript要素は、head要素子や子孫として、祖先にnoscript要素のない状態で配置が可能です。また、フレージングコンテンツを受け入れる要素コンテンツとして、祖先にnoscript要素のない状態で配置が可能です。

document
html
head
body
noscript
p
noscript

noscript要素は、html要素に配置できます。

noscript要素は、フレージングコンテンツコンテンツの一部として配置できる要素であるp要素に配置できます。


3.コンテンツモデル

noscript要素 は、
親要素の内容として
適切なコンテンツが
配置できます。

noscript要素子や子孫としてどのようなコンテンツ(Content内容) が含まれなければならないかというと、透過的」です。ただし、noscript要素の子孫があってはなりません。

別の言い方で細かく言うと、noscript要素は、head要素子や子孫の場合は、任意の順序で、0個以上のlink要素、0個以上のstyle要素、0個以上のmeta要素を配置できます。head要素子や子孫でない場合は、透過的ですがnoscript要素の子孫があってはなりません。

コンテンツモデルで「透過的」(transparent) とは、その透明な要素のコンテンツモデルは、その透明な要素の親要素のコンテンツモデルから派生するという事です。つまり、「透明」であるコンテンツモデルの部分に必要な要素は、透明な要素が含まれる透明な要素の親のコンテンツモデルの部分に必要な要素と同じです。

document
html
head
body
noscript
link
style
meta
div
p
address
noscript
noscript
noscript
section
span
div

head要素子や子孫の場合のnoscript要素は、任意の順序で、0個以上のlink要素、0個以上のstyle要素、0個以上のmeta要素を配置できます。

head要素子や子孫でない場合のnoscript要素は、その親のコンテンツモデルの部分に必要な要素と同じです。
コンテンツモデルがフローコンテンツであるdiv要素の場合のnoscript要素は、カテゴリがフローコンテンツであるsection要素を配置できます。
コンテンツモデルがフレージングコンテンツであるp要素の場合のnoscript要素は、カテゴリがフレージングコンテンツであるspen要素を配置できます。
コンテンツモデルがフローコンテンツ(sectionコンテンツを除く) であるaddress要素の場合のnoscript要素は、カテゴリがフローコンテンツでありsectionコンテンツではないdiv要素を配置できます。

この記述は大まかな概念であり、個々の決まりには親子だけでなく祖先, 子孫まで関わる事があるので、実際の活用には個々の要素の決まりを確認して下さい。


4.コンテンツ属性

noscript要素 は、
グローバル属性のみ
設定できます。

noscript要素に指定することができる属性は、グローバル属性のみ 設定できます。

noscript要素は、スクリプトが有効か無効かで表したり表さなかったりするだけの透過的なコンテンツモデルなので、属性を設定する必要はないと思います。


5.DOM インターフェイス

noscript要素
直接表す
プロパティは
ありません。

noscript要素を JavaScript などで操作するには、documentgetElementById()メソッドを用いてid属性で指定して、noscript要素を取得する方法があります。この時に取得できる値の形式はHTMLElement インターフェイスです。

まぁスクリプトが無効な時の為の要素を、スクリプトで操作するという場面があるのかというのが。

この下の noscript要素の内容は、 "〇〇"です。

  1. <p>この下の noscript要素の内容は、
  2. "<code id="icdJs502">〇〇</code>"です。</p>
  3. <script>
  4. document.addEventListener("DOMContentLoaded", function() {
  5. document.getElementById("icdJs502").textContent = document.getElementById("insJs501").textContent;
  6. });
  7. </script>
  8. <noscript id="insJs501">
  9. <span>てきすと</span>
  10. </noscript>

noscript要素id属性を指定して、その id属性で要素を取得する例です。例示で表示する為に、HTML文書の読み込みと解析が終了した時に処理するコードとしています。

この例は、noscript要素を扱う例なので、スクリプトが無効という視点ではありません。まぁnoscript要素に対しての技術として, 知識としての参考程度と考えて下さい。


6.レンダリング

  1. @media (scripting) {
  2. noscript {
  3. display: none !important;
  4. }
  5. }

noscript要素は、ビジュアルメディアではクリプトが有効な場合は何も表さず、スクリプトが無効な場合はその子を表します。スクリプトの有効, 無効でビジュアルメディアでボックスを生成するか否かの要素なので、ビジュアルメディアでボックスを生成する, しないの様な指定は行わないのが良いでしょう。


7.気を付ける点

配置

スクリプトが無効な時の記述と言って、安易にどこでも配置できる訳ではありません。 そもそもスクリプトが無効な環境とはどの様な状況か想定が必要です。 また、スクリプトとの設計思想から考えるべきで、スクリプトで作り出すか, スクリプトで更新・削除するかなど基本的な処から意識する必要があります。


8.付記