Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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
Noscript标记、JavaScript禁用警告和Google惩罚_Javascript_Seo_Noscript - Fatal编程技术网

Noscript标记、JavaScript禁用警告和Google惩罚

Noscript标记、JavaScript禁用警告和Google惩罚,javascript,seo,noscript,Javascript,Seo,Noscript,当用户禁用JavaScript或使用脚本阻止插件(如noscript)时,我一直在使用noscript标记来显示警告。如果JavaScript被禁用,网站将无法正常运行,用户可能无法理解为什么它在没有警告的情况下无法工作 在最新的谷歌算法洗牌之后,我看到每天的流量下降到前几个月的1/3左右。我还看到在SERP中排名为1或2的页面从结果中退出。在使用网站管理员工具进行了一些调查之后,我注意到“JavaScript”在关键字部分被列为#16。这是没有意义的,因为该站点与JavaScript无关,wo

当用户禁用JavaScript或使用脚本阻止插件(如noscript)时,我一直在使用noscript标记来显示警告。如果JavaScript被禁用,网站将无法正常运行,用户可能无法理解为什么它在没有警告的情况下无法工作

在最新的谷歌算法洗牌之后,我看到每天的流量下降到前几个月的1/3左右。我还看到在SERP中排名为1或2的页面从结果中退出。在使用网站管理员工具进行了一些调查之后,我注意到“JavaScript”在关键字部分被列为#16。这是没有意义的,因为该站点与JavaScript无关,word出现的唯一位置是noscript标记之间的文本

谷歌现在似乎在noscript标签之间包含和索引内容。我不相信这以前发生过。警告是三句话。我可以想象,在网站的每个页面顶部出现同样的三句话会对搜索引擎优化产生破坏性的影响

你认为这会导致搜索引擎优化问题吗?还有,有没有其他方法可以向禁用JavaScript的用户提供警告,这些用户不会被搜索引擎编入索引或读取?

并不适用于无意义的警告,例如:


哦,不!您没有启用JavaScript!如果你不启用JS,你就注定要失败。[关于如何在每个浏览器中启用JS的详细说明]


这意味着你要提供尽可能多的内容,同时礼貌地提到启用JS将提供对某些额外功能的访问。你会发现,基本上每个流行网站都遵循这一准则。

我认为使用
不是一个好主意。我听说,当客户端位于JavaScript阻止防火墙后面时,它是无效的-如果客户端浏览器启用了JavaScript,
标记将不会激活,因为就浏览器而言,JavaScript在文档中是完全可操作的

在我看来,一个更好的方法是用JavaScript隐藏所有可能的“noscript”内容

下面是一个非常基本的示例:

...
<body>

    <script>
        document.body.className += ' js-enabled';
    </script>

    <div id="noscript">
        Welcome... here's some content...
    </div>

更多信息:

内容放在HTML的末尾,然后使用CSS将其放置在浏览器窗口的顶部。谷歌将不再认为这是重要的。
堆栈溢出本身就使用了这种技术——在这个页面上查看源代码,你会在HTML的末尾看到一个“最好使用JavaScript”的警告,当你关闭JavaScript时,它会出现在页面的顶部。

另一个论坛上有人提到使用图像作为警告。在我看来,这有三个好处:

  • 搜索引擎不会有任何不相关的文本来索引
  • 显示单个图像的代码比文本警告(每页都会加载)要小
  • 可以实现跟踪以确定调用图像的次数,从而了解有多少访问者禁用或阻止了JavaScript

  • 如果您将其与J-p提到的非noscript技术相结合,这似乎是最好的解决方案。

    只是想发布一条与此相关的有趣消息。对于我的一个站点,我最终做了一些类似于stack overflow使用的东西,但是添加了一个“find out more”链接,因为我的用户没有这个站点那么专业


    有趣的是,根据people aboce的建议,我的解决方案放弃了noscript标记,而是选择用javascript隐藏消息div。但是我发现,如果firefox正在等待其主密码,则消息的隐藏会被中断,因此我想我会回到noscript。

    如果您选择基于替换div内容(如果启用js,则div内容会得到更新)而不是使用noscript标记的解决方案,请注意谷歌如何看待这种做法:


    我不确定谷歌会认为它是骗人的,但它是值得考虑和研究的。下面是另一篇关于此的stackoverflow帖子:

    表明“防火墙”系统中存在设计缺陷,而不是noscript的问题。这样的防火墙可能会阻止下载所需的脚本。因此,如果
    className+='js enabled'
    实际上是这样的外部库的一部分,那么上述问题可能确实比
    暴露出更多的问题。(如上图所示,JS是从
    sstatic.net
    域获取的,如果jQuery是从
    googleapis.com
    加载的。结合上述内容,它还可以指示
    sstatic.net
    是否被阻止。)此外,不会出现任何文本,因此带有屏幕阅读器的残疾人将无法使用您的网站-1.@user9876,没有任何
    alt
    无法修复。(
    alt
    甚至是为此而设计的。)然而,它可能会被谷歌索引。我将
    放在HTML的末尾,并使用CSS,如
    位置:固定;左:0px;顶部:0px,但没有成功。你能用示例代码和细节解释一下吗?@Amir:示例代码就在这一页中——StackOverflow本身就使用了这种技术。关闭JavaScript查看此页面,您将看到它,然后使用浏览器的开发工具检查HTML和CSS。如果您仍然无法让它工作,那么应该创建一个最小的JSFIDLE来演示问题并提出一个新问题。
    
    body.js-enabled #noscript { display: none; }