Javascript 使用<;noscript>;在<;头>;:好主意还是坏主意?

Javascript 使用<;noscript>;在<;头>;:好主意还是坏主意?,javascript,html,css,noscript,html-head,Javascript,Html,Css,Noscript,Html Head,我注意到Facebook这样做,他们在标签中的中包含了一个元刷新。他们使用这个来检测用户代理是否启用了javascript 我们考虑使用这种方法有两个原因: 自动重定向到非js优化版本的网站,就像facebook一样 为了包括一个非js样式表,希望能够禁用仅javascript锚以及CSS3投诉浏览器上的手指指针,将这些按钮淡出以使其更明显地被禁用(不起作用) 出于上述原因使用此方法是否会导致任何负面影响,从而影响大部分用户代理?对于第二种情况,我建议使用一种方法,首先为元素提供一个no js类

我注意到Facebook这样做,他们在
标签中的
中包含了一个元刷新。他们使用这个来检测用户代理是否启用了javascript

我们考虑使用这种方法有两个原因:

  • 自动重定向到非js优化版本的网站,就像facebook一样
  • 为了包括一个非js样式表,希望能够禁用仅javascript锚以及CSS3投诉浏览器上的手指指针,将这些按钮淡出以使其更明显地被禁用(不起作用)

  • 出于上述原因使用此方法是否会导致任何负面影响,从而影响大部分用户代理?

    对于第二种情况,我建议使用一种方法,首先为
    元素提供一个
    no js
    类,然后使用JavaScript立即删除该类,并将其替换为一个类
    js
    (或者包含这样的库会自动执行此操作)。通过这种方式,您可以通过在CSS样式前面加上
    .js
    .no js
    前缀,将CSS样式定位于启用和禁用的JavaScript情况

    例如,类似这样的事情:

    .js span.javascriptOnlyAnchor { cursor: pointer; text-decoration: underline; }
    
    .no-js span.javascriptOnlyAnchor { display: none; }
    

    Paul Irish在这里谈到了更多:

    不,在头部使用
    标签不应该有任何过度的负面影响

    也就是说,
    有一些缺点:

    • 仅当浏览器不支持JavaScript或禁用JavaScript时,它才起作用。如果Javascript被防火墙阻止,则
      标记的内容将不可见
    • Javascript支持非常差的用户代理仍然会忽略
      内容
    • 虽然大多数浏览器在头部支持
      ,但它在技术上是无效的X(HTML),因此您的页面可能无法验证
    依我看,你想做的是一件非常好的事情,是对标签的恰当使用。然而,更好的解决方案是在Javascript中使用特性检测来启用Javascript特性,而不是使用
    来禁用它们


    如果您依赖HTML5功能,我会推荐该库用于此目的。

    即使我注意到了这一点,并且我一直在生产网站上使用该库将用户发送到非JS页面,要求他们更新浏览器或启用JS或其他任何可能的方法,我也很想知道这种方法的替代方法和陷阱,向上投票问题建议使用有效的html,例如,我在解析PHP中头部有NOSCRIPT标记的html时遇到问题。您建议在输出缓冲区中的哪一点实际运行js?在头脑里?就在尸体后面?当执行js对html重新分类时,html(理想情况下)仍然是开放的,这一事实不会产生任何问题?我不会安装这个库,但会对它进行自定义编码。这是为数不多的几次在头部使用一点点JavaScript是一个好主意。否则,您仍然容易受到未设置样式(本例中为错误样式)内容的影响。