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