检测用户是否禁用JavaScript的原理分析及解决方案

       现在禁用JavaScript的浏览器用户应该很少,但网页编程人员还是需要考虑JS被禁用这个问题,特别是用户提交数据的时候不仅要在前台用JS检验,更要在后台用程序验证,此外,需要提醒用户开启JS以获得良好的网页浏览体验。


       在解决如何检测用户是否禁用JS的问题前,首先需要明白两点:

       1、JS是位于客户端而不是服务器端,当服务器响应完用户请求返回页面时,连带返回JS资源,这时候服务器没有控制权,对网页的处理权均在客户端了。

       2、JS是用来完善用户体验的,网页编程人员不要奢望在没有JS支持下写出同样效果的网页。


       要判断用户是否禁用了JS,有两种方法:

       一、使用标签noscript

          noscript 元素用来定义在脚本未被执行时的替代内容。

     此标签可被用于可识别 <script> 标签但无法支持其中的脚本的浏览器。

          如果浏览器不支持script的代码,则会显示noscript 元素中的内容;如果浏览器支持脚本,那么它不会显示出 noscript 元素中的文本。

          完整实例代码如下:

<html>
  <head>
  </head>
  
  <body>
  <noscript>【如果您看见这里的内容,说明您的浏览器不支持或没有启用JS!】<br /></noscript>
  Hello World!
  </html>

          兼容性检查     

  • Trident(IE内核):IE6、IE7、IE8、IE9均通过
  • Gecko(FF内核):火狐检查通过
  • Webkit:谷歌检查通过

       二、使用JS判断

          既然JS都被禁用了,那只能预先设置禁用了JS的提示。

                <div id="nojs">【如果您看见这里的内容,说明您的浏览器不支持或没有启用JS!】<br /></div>

          要在JS没有被禁用的情况下,不出现这个提示,可以利用JS进行判断,因为此时没有禁用JS,所以JS可以被执行。

               设置div不可见,document.getElementById("nojs").style.display="none"


         可能有人发现没有效果,有一种可能是因为将该JS代码放在头部或者其他先与div代码的地方,此时因为已经执行了js,后面再显示div,此时js不起作用了。

        解决办法有两种:

          一是在将js代码放在该div后面

          二是有人想把js放在头部,那怎么办呢?我们知道该JS一定要在页面加载完后才能执行,而又要放在该div前面,那可以在js里判断页面是否加载完,即onload。

                window.onload = function(){
                      document.getElementById("nojs").style.display="none";
                }

          完整实例代码如下:

<html>
  <head>
  <title>无标题文档</title>
  <script language="javascript">
  window.onload = function(){
     document.getElementById("nojs").style.display="none";
  }
  </script>
  </head>
  
  <body>
  <div id="nojs">【如果您看见这里的内容,说明您的浏览器不支持或没有启用JS!】<br /></div>
  Hello World!
  </body>
  </html>

          注意,这种方法有一个很大的缺点——在所要加载的网页很大,而且浏览器的工作模式是边加载边渲染时,短时间内能看到这段文字,加载完成后才会消失。


           兼容性检查

  • Trident(IE内核):IE6、IE7、IE8、IE9均通过
  • Gecko(FF内核):火狐检查通过
  • Webkit:谷歌检查通过
          特别感谢网友  QR417TS指出谷歌浏览器如何设置禁用JS

知识共享许可协议
本作品采用 知识共享署名-非商业性使用 3.0 Unported许可协议进行许可。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值