我已经使用<noscript>
标记在未启用javascript时隐藏某些元素;但是,它似乎不起作用。
我的文件声明:
<!DOCTYPE html>
在我的文件末尾输入以下内容:
<noscript>
<style type="text/css" scoped> #status {display:none;} </style>
</noscript>
</body>
</html>
但即使禁用JS,#status div仍然存在。我在这里错过了什么吗?
答案 0 :(得分:11)
删除scoped
标记的style
属性。它使您的CSS严格适用于<noscript>
标记。
如果存在此属性,则样式仅适用于其父元素。
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style#Attributes
答案 1 :(得分:5)
更简单的管理解决方案是默认隐藏元素并使用:
<script>document.getElementById('status').style.display='block';</script>
(或基于同等类别的解决方案)
答案 2 :(得分:0)
尝试删除scope
的{{1}},如下面的代码所示。
style
答案 3 :(得分:0)
@ dystroy的回答是正确的做法,因为:
<style>
个元素不能放在<body>
上(除非他们有scoped
属性)<noscript>
元素不能放在头上。但如果您不想延迟,可以在<head>
中使用以下内容:
<style id="noScriptSheet" type="text/css">
.onlyScript{ display:none;}
</style>
<script type="text/javascript">
function kill(el){
return el.parentNode.removeChild(el);
}
kill(document.getElementById('noScriptSheet'));
</script>
在元素中添加一个类:
<div class="onlyScript">Hello world!</div>
答案 4 :(得分:0)
我要添加此答案,因为这似乎是关于noscript
标签的最受欢迎的SO问题。
“ Sybu JavaScript阻止程序” 似乎根本不起作用。因此,如果您要使用该JavaScript阻止程序进行测试,请尝试使用其他JavaScript阻止程序。当我使用“ Toggle Javascript”时,noscript
标签会被正确触发。我还没有发现一种检测到正在使用“ Sybu JavaScript阻止程序”的方法。
我的测试环境: