javascript - 为什么这段代码在IE下面会报错??

查看:109
本文介绍了javascript - 为什么这段代码在IE下面会报错??的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="http://cdn.bootcss.com/jquery/2.2.2/jquery.min.js"></script>
</head>
<body>
    <button id="btn">获取验证码</button>

    <script type="text/javascript">
        window.onload=function(){
            function countDown(params) {
                this.params = params || {};
                var obj = params.obj;
                var deText = params.deText || "获取验证码";
                var delay = params.delay || 60;

           //点击按钮触发
           obj.click(function() {
               if (obj.text() == deText) {
                   setLocalDelay(delay);
                   downProcess(obj, delay);
               } else {
                   return false;
               }
           });

           //页面刷新后继续倒计时
           var LocalDelay = getLocalDelay();
           var timeLine = parseInt((new Date().getTime() - LocalDelay.time) / 1000);
           if (timeLine <= LocalDelay.delay) {
               var newDelay = LocalDelay.delay - timeLine;
               downProcess(obj, newDelay);
           }

           function downProcess(obj, delay) {
               obj.text("重新发送(" + delay + "s)").attr("disabled", true);
               var timer = setInterval(function() {
                   if (delay > 1) {
                       delay--;
                       obj.text("重新发送(" + delay + "s)");
                       setLocalDelay(delay);
                   } else {
                       clearInterval(timer);
                       obj.text(deText).removeAttr("disabled");
                   }
               },
               1000);
           }

           //设置 localStorage
           function setLocalDelay(delay) {
               //location.href作为页面的唯一标识,可能一个项目中会有很多页面需要获取验证码。
               localStorage.setItem("delay_" + location.href, delay); //保存倒计时余下时间
               localStorage.setItem("time_" + location.href, new Date().getTime()); //当前时间
           }
           //获取 localStorage
           function getLocalDelay() {
               var LocalDelay = {
                   delay: localStorage.getItem("delay_" + location.href),
                   //获取储存的余下时间
                   time: localStorage.getItem("time_" + location.href) //获取储存的"当前时间"
               };
               return LocalDelay;
           }
       }

       countDown({
           obj:$("#btn")
       });
   };
</script>
</body>
</html>

在chrome firefox opera等等浏览器下能正常运行!!!唯独到IE下面就报错(我用的IE11测试的),

我不知道是不是我的IE浏览器有问题??求大家把代码复制到你们的ie下测试下,告诉我是我的ie浏览器有问题还是兼容原因,谢谢!

解决方案

$ not defined

应该是网络问题,jquery没有加载进来

localstorage为null

localStorage在ie8下不支持,会报错, http://caniuse.com/#search=lo...

ie测试localStorage需要在服务器下测试,本地测试不行。所以你直接打开html测试会报错。

这篇关于javascript - 为什么这段代码在IE下面会报错??的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆