javascript - 在 HTML 网页中,noscript 标签内的内容不会被具有脚本阻止扩展的浏览器呈现

标签 javascript html noscript

在 HTML 网页中,noscript 标签内的内容不会被带有脚本阻止扩展的浏览器呈现。

我有一个页面

http://www.zen76171.zen.co.uk/aaa2.html

用这个 HTML

<!doctype html>
<html>
<head>
<noscript>aaa</noscript>
<script>document.write("bbb")</script>
</head>
<body>
ccc
</body>
</html>

我知道如果浏览器没有运行 javascript,noscript 标签的内容应该运行。

在 chrome 或 firefox 中,没有扩展阻止任何东西,我得到 bbb ccc 的输出。很好,很有道理。 'bbb' 显示是因为允许使用 javascript,ccc 显示是因为它将显示是否启用了 javascript。

如果我安装例如uBlock 原始扩展,或者如果在 Firefox 中我安装了 NoScript 扩展(注意 - 该扩展的名称恰好与 noscript 标签相同),然后当我重新加载我提到的页面时

http://www.zen76171.zen.co.uk/aaa2.html

它显示ccc。这向我表明脚本被阻止了(因为它没有显示 bbb,所以那部分(没有显示 bbb,很好。

但我期望的输出是 aaa ccc,因为我期望 'aaa' 在脚本被禁用时显示,并且脚本被禁用。

还有一个我要解决的次要问题,那就是如果我禁用甚至“删除”Firefox 中的 NoScript 扩展,那么我仍然会得到与“ccc”相同的响应,我必须卸载并重新安装 Firefox删除 NoScript 扩展。但就目前而言,当我想删除 NoScript 扩展时就可以了。 uBlock Origin 没有这样的问题(不需要重新安装浏览器来删除它!)。因此,如果有人试图重现此问题,那么我建议他们要么使用他们拥有的脚本拦截器,要么像我一样使用 uBlock Origin。

为什么它只显示 'ccc' 而不是 'aaa ccc'(当脚本被阻止时)?

uBlock Origin 或 NoScript 扩展就是这种情况。所以,它似乎与任何禁用脚本的东西有关。

那么,为什么 aaa 从未显示过。我认为它应该在禁用脚本时显示。

最佳答案

只有当 <noscript>body , 而不是 head .它的行为是绝对正确的。想想在 <head> 中设置任何内容: 不会显示。

无效:<noscript><head>

<!doctype html>
<html>
<head>
    <noscript>aaa</noscript>
    <script>document.write("bbb")</script>
</head>
<body>
    ccc
</body>
</html>

使用最新的 Chrome 和 uBlock Origin 进行了测试Windows 10 Pro 上的扩展 codepen

将工作:<noscript><body>

<!doctype html>
<html>
<head>
</head>
<body>
    <noscript>aaa</noscript>
    <script>document.write("bbb")</script>
    ccc
</body>
</html>

使用最新的 Chrome 和 uBlock Origin 进行了测试Windows 10 Pro 上的扩展 codepen

附加

关于 MDN <noscript> page它说(强调我的)

Permitted content: When scripting is disabled and when it is a descendant of the <head> element: in any order, zero or more <link> elements, zero or more <style> elements, and zero or more <meta> elements. When scripting is disabled and when it isn't a descendant of the <head> element: any transparent content, but no <noscript> element must be among its descendants. Otherwise: flow content or phrasing content.

所以:如果在头部,只允许链接、元和样式

关于javascript - 在 HTML 网页中,noscript 标签内的内容不会被具有脚本阻止扩展的浏览器呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55452065/

相关文章:

javascript - Firebug 命中了我的调试器语句。 'continue' 做什么, 'disable' 做什么?

html - 单击纯 css 时转到特定的 Accordion 选项卡

javascript - 读取动态更新的属性值jquery

javascript - 如何使用 noscript 标签?

php - 如果没有 javascript,但使用 php 而不是 <noscript>,如何防止页面加载?

javascript - 将 Vue 项目打包成可以嵌入到 Ghost 博客文章中的单个 js 文件

javascript - 为什么关闭第一个模式对话框后无法显示第二个模式对话框?

javascript - 从联系人查找中查看联系人信息

javascript - 检测 NoScript(不是标签,扩展名)

php - 在隐藏输入中,如何在另一个输入中获取输入文本值?