<noscript>
<style type="text/css">
.pagecontainer {display:none;}
</style>
<div class="noscriptmsg">
You don't have javascript enabled. Good luck with that.
</div>
</noscript>
...其中你的网站中所有的内容都被包裹在一个 class 为 "pagecontainer" 的 div 中。noscript 标签内的 CSS 将隐藏所有页面内容,并显示任何你想要展示的“无 JS”消息。这实际上是 Gmail 所使用的方法……如果它对 Google 足够好,那么它也足以适用于我的小网站。
<noscript>
元素。<script type="javascript">
... construction of ajaxy-link, setting of "js-enabled" cookie flag, etc..
</script>
<noscript>
<a href="next_page.php?nojs=1">Next Page</a>
</noscript>
没有开启 JavaScript 的用户将会得到 next_page
链接——您可以在此添加参数,以便在下一页中知道他们是通过 JS/非 JS 链接进入的,或者尝试通过 JS 设置 cookie,其缺失意味着 JavaScript 已被禁用。这两个示例都相当简单,并且容易受到操纵,但您已经有了想法。
如果您想纯粹地统计有多少用户禁用了 JavaScript,可以采取以下措施:
<noscript>
<img src="no_js.gif" alt="Javascript not enabled" />
</noscript>
然后检查您的访问日志,以查看该图像被点击的次数。这是一个稍微粗糙的解决方案,但它会为您的用户基础提供一个很好的百分比概念。
对于只支持纯文本浏览器或根本不支持JS的浏览器,上述方法(图像跟踪)将无法很好地发挥作用,因此,如果您的用户群主要偏向于该领域,这可能不是最佳选择。
<noscript><meta http-equiv="refresh" content="0; url=whatyouwant.html" /></noscript>
我建议你采用不显眼的JavaScript编写方式。
确保你的项目功能在禁用JavaScript的情况下也能为用户提供服务,完成后再实现JavaScript UI增强。
如果你的使用场景是有一个表单(比如登录表单)而你的服务端脚本需要知道用户是否启用了 JavaScript,你可以采取以下方法:
<form onsubmit="this.js_enabled.value=1;return true;">
<input type="hidden" name="js_enabled" value="0">
<input type="submit" value="go">
</form>
在提交表单之前,这将把js_enabled的值更改为1。如果您的服务器端脚本获取到了0,则没有JS。如果它获取到了1,则有JS!
<noscript>
标签并不是必要的,更不用说在 XHTML 中不受支持了。
工作示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
<title>My website</title>
<style>
#site {
display: none;
}
</style>
<script src="http://code.jquery.com/jquery-latest.min.js "></script>
<script>
$(document).ready(function() {
$("#noJS").hide();
$("#site").show();
});
</script>
</head>
<body>
<div id="noJS">Please enable JavaScript...</div>
<div id="site">JavaScript dependent content here...</div>
</body>
</html>
在这个例子中,如果JavaScript已启用,则会看到该站点。如果没有启用,则会看到“请启用JavaScript”消息。 测试JavaScript是否已启用的最佳方法是尝试使用JavaScript! 如果它能正常工作,则已启用;否则,则未启用...
在body标签上使用.no-js类,基于.no-js父类创建非JavaScript样式。如果禁用了JavaScript,则您将获得所有非JavaScript样式,如果有JS支持,则.no-js类将被替换为通常的所有样式。
document.body.className = document.body.className.replace("no-js","js");
HTML5 Boilerplate中使用的技巧http://html5boilerplate.com/是通过Modernizr实现的,但你可以使用一行JavaScript代码替换这些类。
noscript标签没问题,但是为什么要在HTML中添加额外的内容,当可以用CSS完成呢?
.nojs
类之前竟然要花这么长时间!这是最无缝的方法之一,使 noscript
相形见绌。 - Moses.pagecontainer {
display: none;
}
JS:
function load() {
document.getElementById('noscriptmsg').style.display = "none";
document.getElementById('load').style.display = "block";
/* rest of js*/
}
HTML:
<body onload="load();">
<div class="pagecontainer" id="load">
Page loading....
</div>
<div id="noscriptmsg">
You don't have javascript enabled. Good luck with that.
</div>
</body>
无论哪种情况下都可以工作对吧? 即使不支持noscript标签(只需要一些css)。 有人知道非css的解决方案吗?
您可以使用简单的JS代码片段来设置隐藏字段的值。当提交后,您就会知道是否启用了JS。
或者,您可以尝试打开一个快速关闭的弹出窗口(但可能可见)。
此外,您还可以使用NOSCRIPT标记来显示针对未启用JS的浏览器的文本。