JS中兼容问题的汇总

  获取非行内样式的兼容方式

function getStyle(obj,attr){  //获取非行间样式,obj是对象,attr是值
     if(obj.currentStyle){                //针对ie获取非行间样式
          return obj.currentStyle[attr];
      }else{
          return getComputedStyle(obj,false)[attr];   //针对非ie
        }
    }

  获取事件对象的兼容方式

document.onclick=function(eve){
        var e=eve||window.event;
        console.log(e);
    }

  事件冒泡的兼容方法

function stopBubble(e){
        if(e.stopPropagation){
            e.stopPropagation();
        }else{
            e.cancelBubble = true;//兼容ie
        }
    }

  阻止浏览器默认行为的兼容方法

    if( e.preventDefault ){
        e.preventDefault();
    }else{
        window.event.returnValue = false;//ie
    }

  监听事件的设置和移除的兼容方式

1.封装成对象的方式
    var EventUtil={
        addHandler:function(DOM,EventType,fn){
            if(DOM.addEventListener){
                DOM.addEventListener(EventType,fn,false);
            }else if(DOM.attachEvent){
                DOM.attachEvent(‘on‘+EventType,fn)
            }else{
                DOM[‘on‘+EventType]=fn
            }
        },
        removeHandler:function(DOM,EventType,fn){
            if(DOM.removeEventListener){
                DOM.removeEventListener(EventType,fn,false)
            }else if(DOM.detachEvent){
                DOM.detachEvent(‘on‘+EventType,fn)
            }else{
                DOM[‘on‘+EventType]=null;
            }
        }
    }

2.封装成两个函数的方式
    function addEvent(obj,inci,back){
        if(obj.addEventListener){
            obj.addEventListener(inci,back);
        }else if(obj.attachEvent){
            obj.attachEvent("on" + inci,back);
        }else{
            obj["on"+inci] = back;
        }
    }

    function removeEvent(obj,inci,back){
        if(obj.removeEventListener){
            obj.removeEventListener(inci,back,false);
        }else if(obj.detachEvent){
            obj.detachEvent("on" + inci,back);
        }else{
            obj["on"+inci] = null;
        }
    }

  事件委托的兼容方法

var oul = document.querySelector("ul")
    oul.onclick = function(eve){
        var e = eve || window.event;

        var t = e.target || e.srcElement;

        if(t.getAttribute("abc") == "l"){
            console.log(e.target.innerHTML)
        }

    }

  键盘事件的兼容方法

var eve = eve||window.event;
var keyC = eve.keyCode||eve.which;

  以上是本人在学习js过程中遇见的几个兼容方式的汇总,如果哪里有错误希望大家指出,谢谢。

原文地址:https://www.cnblogs.com/lxylhj/p/11479827.html

时间: 2024-11-09 05:55:54

JS中兼容问题的汇总的相关文章

js中的DOM操作汇总

一.DOM创建 DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性.DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: 1.Element,元素2.Attribute,属性3.Text,文本DOM节点创建最常用的便是document.createElement和document.createTextNode方法: var node1 = document.createElement('div');var node2 = document.create

(转)js中typeof的用法汇总

JavaScript中的typeof其实非常复杂,它可以用来做很多事情,但同时也有很多怪异的表现.本文列举出了它的多个用法,而且还指出了存在的问题以及解决办法. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FOperators%2Ftypeof > type

js中typeof的用法汇总[转载]

JavaScript中的typeof其实非常复杂,它可以用来做很多事情,但同时也有很多怪异的表现.本文列举出了它的多个用法,而且还指出了存在的问题以及解决办法. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FOperators%2Ftypeof > type

js中兼容问题的解决

获取事件对象的兼容ie写法 1 var obox = document.querSelector(".box"); 2 3 obox.onclick = function(eve) { 4 var e = eve || window.event //ie只支持window.event 5 console.log(e); 6 } 阻止事件冒泡的兼容ie写法 1 function stopBubble(e){ //传入事件对象 2 if(e.stopPropagation){ 3 e.st

判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解

转载自[脚本之家],原文链接:http://www.jb51.net/article/42864.htm 提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大写,像JSON这种甚至都是大写,所以,大家判断的时候可以都转换成小写,以防出错 1.typeof(param) 返回param的类型(string) 这种方法是JS中的定义的全局方法,也是编译者们最常用的方法,优点就是使用简单.好记,缺点是不能很好的

分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容

问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log.console.info.console.group.console.warn.console.error代码来查看JS的运行情况,但发布时又因为IE不支持console,又要去掉这些代码,一不小心就会出错. 本文分享自己昨晚写的一个console类来试图解决这一问题.当然,更好的做法是把测试代码分开写,那样就不会有这个问题. 解决思路 如何解决IE下不兼容的问题呢,那就是我们自己定义一个console类来覆盖浏览器

常用的兼容IE和火狐FF等浏览器的js方法(js中ie和火狐的一些差别)

介绍了网页上常用的IE/火狐兼容性该页的做法,并给出了代码,相当实用了.为了方便大家阅读代码,以下以 IE 代替 Internet Explorer,以 MF/FF 代替 Mozzila Firefox .以下进入正题: //window.event IE:有window.event对象 FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=doMouseMove(event) 解决方法:var event = event || window.

分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容

分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容 在写JS的过程中,为了调试我们常常会 写很多 console.log.console.info.console.group.console.warn.console.error代码来查看JS 的运行情况,但发布时又因为IE不支持console,又要去掉这些代码,一不小心就会出错 问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log.console.info.console.group.console.

js中的总结汇总(以后的都收集到这篇)

点1:js中的比较字符串是否相等,js中是用"=="这个来判断是否相等,这点跟java中不一样,java中是.equals()这种方法. 在之前写的ajax的demo中,因为用了.equals()来比较两个密码是否相等,找了好久都没找到原因.所以切记js中是用“==”,而不是.equals()方法. 实例: <script type="text/javascript"> function checkPassword(){ var pass1 = docu