今天早上有一篇帖子询问有多少人禁用了 JavaScript。然后我开始想知道可以使用哪些技术来确定用户是否禁用了它。
有谁知道一些简短/简单的方法来检测 JavaScript 是否被禁用?我的目的是发出警告,指出如果浏览器未启用 JS,该站点将无法正常运行。
最终,我想将它们重定向到能够在没有 JS 的情况下工作的内容,但我需要将此检测作为占位符来启动。
今天早上有一篇帖子询问有多少人禁用了 JavaScript。然后我开始想知道可以使用哪些技术来确定用户是否禁用了它。
有谁知道一些简短/简单的方法来检测 JavaScript 是否被禁用?我的目的是发出警告,指出如果浏览器未启用 JS,该站点将无法正常运行。
最终,我想将它们重定向到能够在没有 JS 的情况下工作的内容,但我需要将此检测作为占位符来启动。
我想在这里添加我的 .02。它不是 100% 防弹,但我认为它已经足够好了。
对我来说,问题是提供某种“如果没有 Javascript,此网站无法正常运行”消息的首选示例,那么您需要确保您的网站在没有 Javascript 的情况下也能正常运行。一旦你开始沿着这条路走下去,你就会开始意识到在关闭 JS 的情况下网站应该是防弹的,这是一大块额外的工作。
所以,你真正想要的是“重定向”到一个页面,上面写着“打开 JS,愚蠢的”。但是,当然,您不能可靠地进行元重定向。所以,这里的建议是:
<noscript>
<style type="text/css">
.pagecontainer {display:none;}
</style>
<div class="noscriptmsg">
You don't have javascript enabled. Good luck with that.
</div>
</noscript>
...您网站中的所有内容都用“pagecontainer”类的 div 包裹。noscript 标签内的 CSS 将隐藏您的所有页面内容,而是显示您想要显示的任何“无 JS”消息。这实际上就是 Gmail 所做的……如果它对 Google 来说足够好,那么对于我的小网站来说也足够了。
我假设您正在尝试决定是否提供 JavaScript 增强的内容。最好的实现会完全降级,因此该站点在没有 JavaScript 的情况下仍能运行。我还假设您的意思是服务器端检测,而不是<noscript>
出于无法解释的原因使用该元素。
没有很好的方法来执行服务器端 JavaScript 检测。作为替代方案,可以使用 JavaScript 设置 cookie,然后在后续页面访问时使用服务器端脚本测试该 cookie。然而,这不适合决定要提供什么内容,因为它无法区分没有 cookie 的访问者与新访问者或不接受 JavaScript 设置的 cookie 的访问者。
noscript
块在 JavaScript 被禁用时执行,通常用于显示您在 JavaScript 中生成的替代内容,例如
<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>
没有 js 的用户将获得next_page
链接 - 您可以在此处添加参数,以便您在下一页知道他们是通过 JS/非 JS 链接来的,还是尝试通过 JS 设置 cookie,如果没有,则意味着 JS被禁用。这两个示例都相当琐碎且易于操作,但您明白了。
如果您想了解有多少用户禁用了 javascript 的纯粹统计信息,您可以执行以下操作:
<noscript>
<img src="no_js.gif" alt="Javascript not enabled" />
</noscript>
然后检查您的访问日志以查看此图像已被点击的次数。一个略显粗糙的解决方案,但它会为您的用户群提供一个按百分比计算的好主意。
上述方法(图像跟踪)不适用于纯文本浏览器或根本不支持 js 的浏览器,因此如果您的用户群主要转向该区域,这可能不是最佳方法。
这对我有用:如果 javascript 被禁用,它会重定向访问者
<noscript><meta http-equiv="refresh" content="0; url=whatyouwant.html" /></noscript>
我建议你通过编写不显眼的 JavaScript 来反其道而行之。
使您的项目功能适用于禁用 JavaScript 的用户,完成后,实施您的 JavaScript UI 增强功能。