如何检测JavaScript是否被禁用?
今天早上有一篇文章询问有多少人禁用JavaScript。 然后我开始想知道可以使用哪些技术来确定用户是否禁用了它。
有谁知道一些简短的方法来检测JavaScript是否被禁用? 我的意图是给出一个警告,说明在没有启用JS的浏览器的情况下,网站无法正常运行。
最终我想将它们重定向到能够在没有JS的情况下工作的内容,但是我需要将此检测作为占位符来启动。
我假设你正在尝试决定是否提供JavaScript增强的内容。 最好的实现会降级干净,以便该网站仍能在没有JavaScript的情况下运行。 我还假设你的意思是服务器端检测,而不是用一个无法解释的原因使用<noscript>
元素。
没有一种好的方法来执行服务器端JavaScript检测。 作为替代,可以使用JavaScript设置cookie,然后在随后的页面查看时使用服务器端脚本测试该cookie。 然而,这不适合决定要传送什么内容,因为如果没有Cookie,访客或阻止Cookie的访客将无法区分访客。
我想在这里添加我的.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时执行noscript
块,通常用于显示用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的浏览器来说效果不佳,因此如果您的用户基础主要朝向该区域摆动,则这可能不是最好的方法。
链接地址: http://www.djcxy.com/p/12377.html