Javascript 如何使用<;风格>;a中的元素<;noscript>;标签?
我有一个网站,在我的Javascript 如何使用<;风格>;a中的元素<;noscript>;标签?,javascript,html,w3c-validation,noscript,Javascript,Html,W3c Validation,Noscript,我有一个网站,在我的标签下面有一个标签,以防javascript加载失败。它基本上关闭了一些CSS值来处理平滑滚动JS代码和预加载程序 但是,当我通过w3c HTML验证程序运行站点时,它会显示: 在此上下文中,元素样式不允许作为元素noscript的子元素。(正在抑制来自此子树的进一步错误。) 我使用的代码是: <noscript> <style type="text/css" media="screen">#main-body {opacity: 1 !importa
标签下面有一个
标签,以防javascript加载失败。它基本上关闭了一些CSS值来处理平滑滚动JS代码和预加载程序
但是,当我通过w3c HTML验证程序运行站点时,它会显示:
在此上下文中,元素样式不允许作为元素noscript的子元素。(正在抑制来自此子树的进一步错误。)
我使用的代码是:
<noscript>
<style type="text/css" media="screen">#main-body {opacity: 1 !important; } .viewport {position: static; overflow: visible;} h1, h2, h3 {opacity: 1} .st-ca-title, .st-ca-sub, .st-co-title, .st-co-sub, .js-client-stagger, .btn, .btn a, .st-ho-title, .st-ho-sub, .st-ho-p {opacity: 1}
</style>
</noscript>
#主体{opacity:1!重要;}。视口{位置:静态;溢出:可见;}h1、h2、h3{opacity:1}。st ca title、.st ca sub、.st co title、.st co sub、.js客户端交错、.btn、.btn a、.st ho title、.st ho sub、.st-ho-p{opacity:1}
这段代码确实做了我希望它做的事情(即,如果JS加载失败,确保站点仍然正常工作),但是我是否在这里做了一些错误的事情来得到这个错误
我不能将
标记放在文档的开头,因为它必须位于主js脚本标记之后
欢迎提出任何建议
Paul.似乎没有任何理由认为此代码无效。元素是元素的有效子元素,两者都是
或
的有效子元素
通常,尽管您希望避免将标记与脚本和样式混合在一起。我建议创建一个应用您的样式的类,然后使用JavaScript删除该类。通过这种方式,您可以将样式保留在一个位置,然后将删除这些样式的逻辑与脚本一起包括进来,从而完全避免嵌套的
和
方法
<!DOCTYPE html>
<html>
<head>
<style>
.no-js {
/* "no script" styles here */
}
</style>
</head>
<body class="no-js">
<script>
document.querySelector('body').classList.remove('no-js');
</script>
</body>
</html>
.no.js{
/*这里的“无脚本”样式*/
}
document.querySelector('body').classList.remove('no-js');
我同意@jaasum的观点,不要那样把它们混在一起
无论如何,它不会有你正在寻找的受限影响,像这样定义css的范围。。在这里,红色应用于noscript标记内部,否则应用绿色
<!DOCTYPE html>
<html>
<head>
<style>
.danger {
color: green; font-weight: bold;
}
noscript .danger {
color: red; font-weight: bold;
}
</style>
<script>
function myStuff() {
let p = document.createElement('p');
p.innerHTML = '<p>you seem to have <span class="danger">scripts enabled...</span></p>';
document.body.appendChild( p);
}
</script>
</head>
<body onload="myStuff()">
<noscript>
<h1>Script</h1>
<p>you need <span class="danger">scripts enabled</span></p>
</noscript>
</body>
</html>
.危险{
颜色:绿色;字体大小:粗体;
}
noscript.危险{
颜色:红色;字体大小:粗体;
}
函数myStuff(){
设p=document.createElement('p');
p、 innerHTML='您似乎启用了脚本…';
文件.正文.附件(p);
}
剧本
您需要启用脚本
你能把main.js包含也移到头部吗?如果它起作用,我真的不会注意验证器。验证器是一个重要的工具,通常你应该让你的页面进行验证。有时,如果你需要某个特定的项目来验证或不验证,你必须做出判断。你是否因为IE而尝试使用它?如果是这样的话,给我一个机会