Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript <;noscript>;标签不工作_Javascript_Html_Css - Fatal编程技术网

Javascript <;noscript>;标签不工作

Javascript <;noscript>;标签不工作,javascript,html,css,Javascript,Html,Css,我使用了标记在未启用javascript时隐藏某些元素;然而,它似乎不起作用 我的文件声明: <!DOCTYPE html> 在文件末尾,我键入了以下内容: <noscript> <style type="text/css" scoped> #status {display:none;} </style> </noscript> </body> </html> #状态{显示:无;} 但是#sta

我使用了
标记在未启用javascript时隐藏某些元素;然而,它似乎不起作用

我的文件声明:

<!DOCTYPE html>

在文件末尾,我键入了以下内容:

<noscript>
 <style type="text/css" scoped> #status {display:none;} </style> 
</noscript>

</body>
</html>

#状态{显示:无;}

但是#status div即使在禁用JS之后仍然存在。我在这里遗漏了什么吗?

删除
样式
标记的
范围
属性。它使您的CSS严格应用于
标记

如果存在此属性,则样式仅应用于其父元素


一个更简单的管理解决方案是在默认情况下隐藏元素,并使用以下方法:

<script>document.getElementById('status').style.display='block';</script>
document.getElementById('status').style.display='block';

(或等效的基于类的解决方案)

尝试删除
样式
范围
,如下所示

       <noscript>
           <style type="text/css"> #status {display:none;} </style> 
       </noscript>

#状态{显示:无;}

@dystroy的答案是正确的,因为:

  • 元素不能放置在
    上(除非它们具有
    作用域
    属性)
  • 元素不能放在头部
但是如果您不想延迟,可以在
中使用以下命令:


.onlyScript{display:none;}
功能终止(el){
返回el.parentNode.removeChild(el);
}
kill(document.getElementById('noScriptSheet');
并向元素添加一个类:

<div class="onlyScript">Hello world!</div>
你好,世界!

Demo

我之所以添加此答案,是因为这似乎是有关
noscript
标记的最流行的SO问题

“Sybu JavaScript拦截器”似乎根本无法启动。因此,如果您使用该JavaScript阻止程序进行测试,请尝试使用另一个JavaScript阻止程序。当我使用“togglejavascript”时,
noscript
标记会毫无问题地启动。我还没有发现一种检测“sybujavascript拦截器”被使用的方法


我的测试环境:

  • Sybu JavaScript阻止程序,版本2.93
  • 切换JavaScript,版本1.3
  • Chrome,版本85.0.4183.83

我不确定链接问题的公认答案是否正确。请看@JamesMontagne最终目标是一样的,但问题不是这样。公平地说,我收回了它。也许更简单,但是当你想做一些特别是在禁用JS时的事情时,
标记很有意义。我想了一个类似的解决方案(添加自定义类),但启用JS后,在加载JS之前会有一个短暂的延迟。这对我来说很重要,所以我只想用HTML来处理它。无论如何,谢谢你。@MattBall我对你的答案投了赞成票,这对解释这个问题有额外的好处。我做了我的作为替代品。艾哈迈德,如果你把这个脚本放在正文的末尾,浏览器不会在执行脚本之前呈现页面。是的,你是对的,我总是使用单独的JS文件。另外,我正在使用JS disabled来更改自定义游标等。我知道这里有多种解决方法,但noscript似乎简单得多,对我来说代码更少。谢谢!它有效:)我不知道我为什么不试试。就在S.O.允许我(时间限制)的时候,我会很快标记这一点。啊,实际上我以前从未使用过它,但几天前在w3上验证我的代码时,它向我显示了一个错误(缺少作用域att)。这是我第一次使用这个att,直到今天我尝试禁用JS时,我才忘记了它。Noob,我知道:)最坏的情况是有害的(正如你们在这里看到的!)。很高兴能提供帮助。但它只在某些浏览器上有效,因为它们使用
中样式表中定义的样式。但它们不应该这样做,因为这不是标准(只有当它们具有
范围
属性时)。相反,样式表应该只在
中使用。从技术上讲,noscript可以放在head中,但这样做时“在元素中使用时”受到限制:只能包含、和元素
<div class="onlyScript">Hello world!</div>