Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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 如何使用<;风格>;a中的元素<;noscript>;标签?_Javascript_Html_W3c Validation_Noscript - Fatal编程技术网

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而尝试使用它?如果是这样的话,给我一个机会