常用原生JS方法总结(兼容性写法)

①添加事件方法


1

2

3

4

5

6

7

8

9

addHandler:function(element,type,handler){

    if(element.addEventListener){//检测是否为DOM2级方法

        element.addEventListener(type, handler, false);

    }else if (element.attachEvent){//检测是否为IE级方法

        element.attachEvent("on" + type, handler);

    else {//检测是否为DOM0级方法

        element["on" + type] = handler;

    }

}

②移除之前添加的事件方法


1

2

3

4

5

6

7

8

9

removeHandler:function(element, type, handler){

       if (element.removeEventListener){

           element.removeEventListener(type, handler, false);

       else if (element.detachEvent){

           element.detachEvent("on" + type, handler);

       else {

           element["on" + type] = null;

       }

   }

③获取事件及事件对象目标


1

2

3

4

5

6

7

8

//获取事件对象的兼容性写法

 getEvent: function(event){

     return event ? event : window.event;

 },

 //获取事件对象目标的兼容性写法

 getTarget: function(event){

     return event.target || event.srcElement;

 }

④阻止浏览器默认事件的兼容性写法


1

2

3

4

5

6

7

preventDefault: function(event){

        if (event.preventDefault){

            event.preventDefault();

        else {

            event.returnValue = false;

        }

    }

⑤阻止事件冒泡的兼容性写法


1

2

3

4

5

6

7

stopPropagation: function(event){

        if (event.stopPropagation){

            event.stopPropagation();

        else {

            event.cancelBubble = true;

        }

    }

⑥mouseover和mouseout 事件才包含的获取相关元素的方法


1

2

3

4

5

6

7

8

9

10

11

12

//mouseover和mouseout 事件才包含的获取相关元素的方法

getRelatedTarget: function(event){

    if (event.relatedTarget){

        return event.relatedTarget;

    else if (event.toElement){

        return event.toElement;

    else if (event.fromElement){

        return event.fromElement;

    else {

        return null;

    }

}

⑦鼠标滚轮判断


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

    /*对于mousedown 和mouseup 事件来说,则在其event 对象存在一个button 属性,

表示按下或释放的按钮。DOM的button 属性可能有如下3 个值:0 表示主鼠标按钮,1 表示中间的鼠

标按钮(鼠标滚轮按钮),2 表示次鼠标按钮。在常规的设置中,主鼠标按钮就是鼠标左键,而次鼠标

按钮就是鼠标右键。

IE8 及之前版本也提供了button 属性,但这个属性的值与DOM 的button 属性有很大差异。

? 0:表示没有按下按钮。

? 1:表示按下了主鼠标按钮。

? 2:表示按下了次鼠标按钮。

? 3:表示同时按下了主、次鼠标按钮。

? 4:表示按下了中间的鼠标按钮。

? 5:表示同时按下了主鼠标按钮和中间的鼠标按钮。

? 6:表示同时按下了次鼠标按钮和中间的鼠标按钮。

? 7:表示同时按下了三个鼠标按钮。*/

getButton: function(event){

    if (document.implementation.hasFeature("MouseEvents""2.0")){

        return event.button;

    else {

        switch(event.button){

            case 0:

            case 1:

            case 3:

            case 5:

            case 7:

            return 0;

            case 2:

            case 6:

            return 2;

            case 4:

            return 1;

        }

    }

}

⑧能够取得鼠标滚轮增量值(delta)的方法


1

2

3

4

5

6

7

8

getWheelDelta: function(event){

    if (event.wheelDelta){

        return (client.engine.opera && client.engine.opera < 9.5 ?

            -event.wheelDelta : event.wheelDelta);

    else {

        return -event.detail * 40;//firefox中的值为+3表示向上滚,-3表示向下滚

    }

}

⑨跨浏览器的方式取得字符编码


1

2

3

4

5

6

7

getCharCode: function(event){

    if (typeof event.charCode == "number"){

        return event.charCode;

    else {

        return event.keyCode;

    }

}

⑩访问剪贴板中的数据


1

2

3

4

getClipboardText: function(event){

        var clipboardData = (event.clipboardData || window.clipboardData);

        return clipboardData.getData("text");

    }

11.设置剪贴板中的数据


1

2

3

4

5

6

7

setClipboardText: function(event, value){

        if (event.clipboardData){

            return event.clipboardData.setData("text/plain", value);

        else if (window.clipboardData){

            return window.clipboardData.setData("text", value);

        }

    }

时间: 2024-10-12 14:15:51

常用原生JS方法总结(兼容性写法)的相关文章

常用原生JS兼容写法

在我们前端开发中,经常会遇到兼容性的问题,因为要考虑用户会使用不同的浏览器来访问你的页面,你要保证你做的网页在任何一个浏览器中都能正常的运行,下面我就举几个常用原生JS的兼容写法: 1:添加事件方法 addHandler:function(element,type,handler){  if(element.addEventListener){//检测是否为DOM2级方法   element.addEventListener(type, handler, false);  }else if (e

原生js方法document.getElementsByClassName在ie8及其以下的兼容性问题

原生js方法“document.getElementsByClassName”在ie8及其以下浏览器中,不能使用. 修改:加入兼容性判断,在需要用到该方法的位置修改为getClassNames方法. 代码如下: 原来方法: document.getElementsByClassName('tabs_div'): 这里的调用方法为:getClassNames('tabs_div' , 'div'): var divs = getClassNames('tabs_div' , 'div'); fun

JavaScript数组方法的兼容性写法 汇总:indexOf()、forEach()、map()、filter()、some()、every()

ECMA Script5中数组方法如indexOf().forEach().map().filter().some()并不支持IE6-8,但是国内依然有一大部分用户使用IE6-8,而以上数组方法又确实非常好用.在过去,我会为了兼容性尽量不用这些方法.但是,总不能为了旧的丢了新的吧?!虽然说jQuery已经集成好了不少语法糖,但jQuery体积太庞大,作为一名志于体面的前端儿得知道原生的兼容性写法要怎么写.于是这几天,我开始在琢磨这些方法的兼容性写法.其实并不难,就是以前不够自信不敢写.写完以后,

自己常用的js方法

//初始化 $(function(){  selectData(".format_select"); }) function showSearchBar(ID) {  if($(ID).css("display")=="none"){   $(ID).fadeIn("slow").css("overflow","visible");;  }else{   $(ID).fadeOut();

常用的JS方法(见到好的就添加进来)

// 悬浮置顶 ; (function ($) { $.fn.crumbsFixedPosition = function (options) { var defaults = { cName: 'fixed_pos' } var options = $.extend(defaults, options); return this.each(function () { var $this = $(this); var t = $(this).offset().top; $(window).on(

jquery使用原生js方法 js/jQuery对象互转

javascript原生有许多方法,jquery自己也有一套封装好的方法,jquery自己的选择器非常方便,但有时候我们需要 使用原生的一些方法,如果我们使用jquery选择元素,直接调用原生javascript的方法就会出现错误.例如我们要输出一张图片的宽度: 原生js: javascript:     var dom1 = document.getElementById("pic").width;    alert(dom1) jquery: var dom2 = $("

HTML DOM对象的属性和方法介绍(原生JS方法)

HTML DOM对象的属性和方法介绍 DOM 是 Document Object Model(文档对象模型)的缩写. DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口),它允许程序和脚本动态地访问和更新文档的内容,结构和样式. W3C DOM 标准被分为 3 个不同的部分: 核心 DOM - 针对任何结构化文档的标准模型 XML DOM - 针对 XML 文档的标准模型 HTML DOM - 针对 HTML 文档的标准模型 HTML DOM 定义了所有 HTML 元

几个原生js方法总结

一.document.getElementById('emoji').addEventListener('click', function(e) { var emojiwrapper = document.getElementById('emojiWrapper'); emojiwrapper.style.display = 'block'; e.stopPropagation(); }, false); (1).e.stopPropagation(): 定义和用法 不再派发事件. 终止事件在传

在项目中常用的JS方法封装

使用方法简单,只需要放在你的 utils.js 工具文件中,直接export const 加上下面封装方法,在别的文件中使用 {方法1,方法2,方法3...}引用后直接使用即可. 01.输入一个值.返回其数据类型 type = para =>{ return Object.toString.call(para).slice(8,-1) } 02.冒泡排序 升序 bubbleAsSort() bubbleAsSort = arr =>{ for(let i=0;i<arr.length -