【发布时间】:2011-02-28 09:50:27
【问题描述】:
我需要检查浏览器 JavaScript 是否关闭,然后显示错误 div 而不是正文,我该怎么做?
【问题讨论】:
标签: javascript jquery html noscript
我需要检查浏览器 JavaScript 是否关闭,然后显示错误 div 而不是正文,我该怎么做?
【问题讨论】:
标签: javascript jquery html noscript
你需要反过来做 - 可以这么说 - 你必须输出所有内容,然后使用 Javascript 隐藏/删除错误 div。
这叫做渐进增强。
【讨论】:
<html class="no-js">
<head>
<style>
.error,
.no-js #container {
display: none;
}
.no-js .error {
display: block;
}
</style>
<script>
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, '');
</script>
</head>
<body>
<div id="container">
rest of page
</div>
<div class="error">
sorry, no javascripty, no sitey!
</div>
</body>
</html>
当然,这通常是个坏主意,但我希望你已经考虑过了。
【讨论】:
您可以在正文中添加:
<noscript>
Here the html to display when javascript is off
</noscript>
【讨论】:
@roryf 的解决方案是一个很好的方法,尽管它依赖于 jQuery,如果 domloaded 事件触发得有点晚,您可以获得无 js 内容的“flash”。
以下内容将在渲染主体之前删除 html.no-js 类:
<!DOCTYPE html>
<html class="no-js">
<head>
<script>
if (document.documentElement) {
var cn = document.documentElement.className;
document.documentElement.className = cn.replace(/no-js/,'');
}
</script>
</head>
【讨论】: