javaScript的兼容问题以及编程时出现的问题

序言:

想必大家都有在编写avascript时 明明在谷歌上的代码没什么问题,但是到了IE上就会报错 那今天就和大家聊聊可能出现的兼容问题以及使用其他API时可能出现的问题。

事件兼容

 ele.addEventListener( type , function(evt){
                    var e = evt || event;}

目标函数兼容:

 ele.addEventListener( type , function(evt){
                var e = evt || event;
   var target = e.target || e.srcElement;}

事件监听兼容:
可以通过typeof关键字避免报错,完成兼容

       if(typeof ele.addEventListener === "function"){
                 ele.addEventListener( type , callback );
             }else{
                 ele.attachEvent("on" + type , callback);
             }

移出监听兼容:
和事件监听兼容同样采用typeof方法实现

if(typeof ele.addEventListener === "function"){
                 ele.addEventListener( type , callback );
             }else{
                 ele.attachEvent("on" + type , callback);
             }

阻止事件冒泡的兼容:

if(typeof e.stopPropagation === "function"){
                e.stopPropagation();
            }else{
                e.cancelBubble = true;
            }
        }

使用其他API时注意的问题
1.开启定时器前最好先关闭定时器
解释:因为一个页面可能存在成百上千个定时器,可能会造成开启关闭的混乱,虽然每个定时器都有不同的id,也可能想要开启时 它并没有被关闭,可能会造成不必要的BUG,因此建议开启定时器前最好先关闭定时器。

2.arguments.callee 可以代表当前函数但是兼容性不好,因为在“”严格模式“”下是不能使用的,注意使用场景。

3.阻止默认事件的几种方法:
javascript vpid(0)用于标签属性之中
例:<a href="javascript vpid(0)">可以组织a标签的默认属性。
e.preventDefaule()也可以阻止默认属性,躲在老版本IE中使用。e.returnValue =false 老版本IE中使用,阻止默认事件
4.想要实现元素跟随鼠标移动时,在获取设置元素位置时别忘了加“px”
例;

box_ele.style.left = e.clientX  + "px";
box_ele.style.top  = e.clientY  + "px";

5.事件的自定义触发:
有时需要多次事件触发时,根据程序逻辑,不能触发已存在绑定事件,于是需要自行创建事件,手动触发事件
例:下方为创建自定义事件以及触发该事件过程

 var m_e = new Event("blur");
 ele.dispatchEvent(m_e);

6.需要深刻理解函数中的this指向
理解透彻函数中的this指向,对于我们在编程过程中显然是意义巨大的,
普通函数中的this指向,调用函数的对象

name=20
function foo(){
this.name=name;
console.log(this.name)
} foo();//this.name=20

显然这里的this是指向window 的

var obj = {
    a: 1,
    b: function() {
        a=3
   console.log(this.a);// this.a=1
    }
}
obj.b();

显然这里的thiss是指向调用对象obj的。
总结:
其实this还有一些相关内容,例如箭头函数中的this指向,改变函数中的this指向,这里暂时不展开了 ,关注我,下周我们继续聊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值