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

Javascript 在HTML网页中,具有脚本阻止扩展的浏览器不会呈现noscript标记中的内容,javascript,html,noscript,Javascript,Html,Noscript,在HTML网页中,noscript标记中的内容不会由具有脚本阻止扩展的浏览器呈现 我有一页 使用此HTML <!doctype html> <html> <head> <noscript>aaa</noscript> <script>document.write("bbb")</script> </head> <body> ccc </body> </html>

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

我有一页

使用此HTML

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

aaa
文件。编写(“bbb”)
ccc
我知道如果浏览器没有运行javascript,noscript标记的内容应该运行

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

如果我安装了uBlock origin扩展,或者如果在Firefox中安装了NoScript扩展(注意,该扩展的名称与NoScript标记一致),那么当我重新加载我提到的页面时

它显示
ccc
。这向我表明脚本正在被阻止(因为它没有显示
bbb
),所以该部分(没有显示
bbb
)是好的

但是我希望的输出是
aaacc
,因为我希望在脚本被禁用时显示“aaa”,并且脚本被禁用

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

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

uBlock Origin或NoScript扩展就是这种情况。因此,似乎任何禁用脚本的东西都是如此


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

它只起作用,如果
主体中,而不是
头部,那么它的行为是绝对正确的。只需考虑在
中设置任何内容:它不会得到di张开的

不起作用:
中的


aaa
文件。编写(“bbb”)
ccc
在Windows 10 Pro上使用最新的Chrome和扩展进行了测试

将工作:
中的


aaa
文件。编写(“bbb”)
ccc
在Windows 10 Pro上使用最新的Chrome和扩展进行了测试

附加的 上面写着(我的)

允许的内容:当禁用脚本时,以及当脚本是元素的后代时:以任何顺序,零个或多个元素、零个或多个元素以及零个或多个元素。 禁用脚本以及脚本不是元素的后代时:任何透明内容,但其后代中不得有任何元素。 否则:流动内容或措辞内容


因此:如果在head中,只有link、meta和style允许,脚本阻止扩展通常通过阻止脚本元素来工作。它们不会在浏览器中禁用JavaScript支持

由于浏览器本身启用了JS支持,因此它不会呈现
noscript
元素

改为使用。从JS不起作用的浏览器的内容开始,然后用JS进行更改

Array.from(
document.queryselectoral(“.nojs”)
)弗雷奇先生(
node=>node.remove()
);

aaa ccc
您的问题中丢失了HTML代码的格式。您能用正确的格式编辑问题以提供帮助吗?在我的机器上(Windows 10 Pro,最新的Chrome)它可以正常工作@Erippereira yunzen已修复格式,感谢您的提醒that@yunzen那么您得到了什么输出呢?a)脚本未被阻止b)脚本被阻止了吗?我不想从中删除元素及其内容html@barlop-只有当JS没有成功运行时,你才试图显示“aaa”。啊,我明白了,所以脚本删除了标记,而不是contents@barlop-它会删除内容,但您不希望内容显示JS是否运行。这就是将它们放在noscript中的首要目的。啊,我明白了,好的,有趣的解决方案。。撇开你的脚本解决方案不谈,关于你提到的noscript元素的内容何时呈现的问题,它看起来(基于云曾的回答),就像浏览器在noscript在主体中时呈现noscript一样(脚本被阻止),只是在主体中从未呈现过它。这看起来是正确的,但我要测试它!我注意到它将noscript放在了标题中,可能这与“在元素中使用时:必须仅包含和元素”相关。因此,没有文本,我猜这是您在“附加”中所说的@barlop我不认为w3schools内容在任何方面具有权威性。
<!doctype html>
<html>
<head>
    <noscript>aaa</noscript>
    <script>document.write("bbb")</script>
</head>
<body>
    ccc
</body>
</html>
<!doctype html>
<html>
<head>
</head>
<body>
    <noscript>aaa</noscript>
    <script>document.write("bbb")</script>
    ccc
</body>
</html>