在<head>中使用<noscript>:好主意还是坏主意?</noscript>

时间:2011-08-13 19:20:04

标签: javascript html css noscript html-head

我注意到Facebook这样做,他们在<noscript>标签中的<head>中附加了元刷新。他们使用它来检测用户代理是否启用了javascript。

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

  1. 自动重定向到facebook的非js优化版本的网站。
  2. 要包含一个非js样式表,希望在javascript唯一的锚点以及CSS3投诉浏览器上禁用手指指针,将这些按钮淡出以使其更明显地被禁用(而不是工作)。
  3. 出于上述原因使用此方法是否会导致影响大部分用户代理的任何不利影响?

2 个答案:

答案 0 :(得分:6)

不,使用头部的<noscript>标签不应有任何夸大的不良影响。

尽管如此,<noscript>还有一些缺点:

  • 仅当浏览器不支持JavaScript或禁用JavaScript时才有效。如果Javascript被防火墙阻止,<noscript>标记的内容将不可见。
  • Javascript支持非常差的用户代理仍会忽略<noscript>内容。
  • 虽然大多数浏览器支持<noscript>,但技术上无效X(HTML),因此您的网页可能无法验证。

IMO,你想要做的是一件非常好的事情,并且是对标签的恰当使用。但是,更好的解决方案是在Javascript中使用功能检测来启用Javascript功能,而不是使用<noscript>来禁用它们。

如果您依赖HTML5功能,我会建议Modernizr库用于此目的。

答案 1 :(得分:3)

对于第二种情况,我建议您使用最初为<html>元素提供no-js类的方法,然后立即使用JavaScript删除该类,并将其替换为{{ 1}}(或包括像Modernizr这样自动执行此操作的库)。这样,您可以通过为这些样式添加js.js前缀来将CSS样式定位到启用和禁用的JavaScript情境。

像这样的东西,例如:

.no-js

保罗爱尔兰在这里谈论更多:http://paulirish.com/2009/avoiding-the-fouc-v3/