【问题标题】:Is using partial HTML comment in noscript to hide content when javascript is disable, guarantee to work everywhere?禁用 javascript 时是否在 noscript 中使用部分 HTML 注释来隐藏内容,保证在任何地方都有效?
【发布时间】:2023-02-10 16:51:19
【问题描述】:

我希望我的网站可以在 lynx 等基于文本的浏览器上运行

HTML 中有一些无用的部分,例如个人资料照片

我尝试了这里最受好评的解决方案 Is there a HTML opposite to <noscript>?

这是

<head>
    <noscript><style> .jsonly { display: none } </style></noscript>
</head>

然而 Lynx 并没有隐藏它

我发现有用的是这样做

<body>
    <noscript> <!--  </noscript>
         <img src="foobar.png">
    <noscript> -->  </noscript>
</body>

这有效并且它似乎适用于我测试过的所有浏览器,即当禁用 javascript 时图像被隐藏,否则显示。

但是我想知道它是否是 HTML5 解析器中记录的行为,或者它是否只是每个人都以相同方式实现的边缘情况?

【问题讨论】:

    标签: html noscript lynx


    【解决方案1】:

    它保证在每个遵守 HTML parsing 规则的用户代理中工作,是的。

    如果你准备好深入了解这台奇妙的机器......

    假设 scripting flag 已启用,并且我们已经处理了 &lt;body&gt; 标签。

    如果 scripting flag 被禁用,

    • 当遇到第一个&lt;noscript&gt;标签时,我们只是从中插入一个ordinary元素。
    • 我们仍在"in body" insertion mode中,分词器仍在data state中。
    • &lt; 字符将其引导至 tag open state
    • ! 一个到 markup declaration state
    • 以及接下来的两个--comment state
    • 从那里直到下一个 --&gt; 序列的所有内容都将成为注释令牌的一部分,该注释令牌将被发送到解析器并因此被视为文本。
    • 解析器inserts the comment
    • 然后获取结束&lt;/noscript&gt; 标记并插入当前节点,其中包含注释。

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2019-01-30
      相关资源
      最近更新 更多