<script>
var oEvent = evt || event;
=========================================================================
var oP1 = oP.previousElementSibling || oP.previousSibling;
var oP1 = oP.nextElementSibling || oP.nextSibling; var oLi = oUl.firstElementChild || oUl.firstChild;
var oLi = oUl.lastElementChild || oUl.lastChild;
=========================================================================
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; ========================================================================= if (oDiv.setCapture) //捕捉事件
{
oDiv.setCapture();
} if (oDiv.releaseCapture) //释放事件
{
oDiv.releaseCapture();
} ========================================================================= oInput.onpropertychange = oInput.oninput = function ()
{
alert(this.value);
}; ========================================================================= // 事件绑定的封装
function addEvent (obj,type,fn) {
if (obj.addEventListener) { //在高级浏览器
obj.addEventListener(type,fn,false);
} else {
obj.attachEvent('on'+type,fn)
}
}
//事件移除的封装
function removeEvent(obj,type,fn) {
if (obj.removeEventListener) {
obj.removeEventListener(type,fn,false);
} else {
obj.detachEvent('on'+type,fn);
}
}
//移除事件的时候,最好不要写匿名函数,应该将事件函数单独抽出来,在绑定事件的方法里面写上函数名 ========================================================================= //鼠标滚轮事件:
//onmousewheel 赋值的方式添加 【兼容chrome IE】
//DOMMouseScroll 绑定的方式添加 【兼容firefox】 //事件对象:
//oEvent.detail 【兼容firefox】
//oEvent.wheelDelta 【兼容chrome IE】 function fn (ev) {
var oEvent = ev || event; if (oEvent.wheelDelta) {
//chrome IE
if (oEvent.wheelDelta > 0) {
...... //向上滚
} else {
...... //向下滚
}
} else {
// Firefox
if (oEvent.detail > 0) {
...... //向下
} else {
...... //向上
}
}
}; //判断浏览器的类型
if (navigator.userAgent.indexOf('Firefox') != -1) {
addEvent(oImg,'DOMMouseScroll',fn); //addEvent是自己封装的绑定兼容写法
} else {
oImg.onmousewheel = fn;
}
========================================================================= /*只要是DOM0级事件,return false可以阻止各个浏览器的默认事件
在DOM2级事件里面,return false只能阻止低版本浏览器的默认事件;
在高级浏览器里面,通过preventDefault()方法阻止默认事件,属于事件对象的*/ if(oEvent.preventDefault){
oEvent.preventDefault();
} // 或者简写成 oEvent.preventDefault && oEvent.preventDefault(); return false; ========================================================================= //封装ready
function addReady(fn) {
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded',fn,false);
} else {
document.attachEvent('onreadystatechange',function(){
if (document.readyState == 'complete') {
fn();
}
});
}
} ========================================================================= 事件对象的属性:
srcElement: 获取到事件真正作用的那个元素 【IE】
target: 获取到事件真正作用的那个元素 【高级浏览器】 var oLi = oEvent.srcElement || oEvent.target; </script>

原生JS--各种兼容性写法总结的更多相关文章

  1. 原生js模拟jquery写法

    function $_custom(fun) { document.onreadystatechange = function() { if (document.readyState == " ...

  2. 原生js浏览器兼容性问题

    1.HTML对象获取问题 FireFox:document.getElementById(“idName”); ie:document.idname或者document.getElementById( ...

  3. onload事件与ready事件的区别,原生js与jquery的区别

    onload事件与ready事件分别是原生js与jquery的入口函数 原生js入口函数写法: window.onload=function(){ } jquery入口函数写法: $(document ...

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

    经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...

  5. addEventListener和attachEvent介绍, 原生js和jquery的兼容性写法

    也许很多同仁一听到事件监听,第一想到的就是原生js的 addEventListener()事件,的确如此,当然如果只是适用于现代浏览器(IE9.10.11 | ff, chorme, safari, ...

  6. 常用原生JS兼容性写法汇总

    1.添加事件方法 addHandler:function(element,type,handler){ if(element.addEventListener){//检测是否为DOM2级方法 elem ...

  7. 原生JS与jQuery文档加载完毕的写法

    HTML是有执行顺序的,默认是自上而下执行.所以当我们的js代码在html代码下边的时候,可以正常执行,而当我们的js代码在html代码上边的时候,可以就无法正常执行了,这时,我们需要在文档加载完毕的 ...

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

    document.getElementsByClassName在ie8及其以下浏览器的兼容性问题,在ie8及其以下浏览器中不能使用,针对这个问题,下面给出详细的解决方法,感兴趣的朋友可以参考下     ...

  9. 原生JS forEach()和map()遍历的区别以及兼容写法

    一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...

随机推荐

  1. 【Codeforces 757B】 Bash's big day

    [题目链接] 点击打开链接 [算法] 若gcd(s1,s2,s3....sk) > 1, 则说明 : 一定存在一个整数d满足d|s1,d|s2,d|s3....,d|sk 因为我们要使|s|尽可 ...

  2. web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法

    感谢http://blog.csdn.net/this_super/article/details/7884383的文章 1.增加静态资源url映射 如Tomcat, Jetty, JBoss, Gl ...

  3. IOCP编程小结(中)

    上一篇主要谈了一些基本理念,本篇将谈谈我个人总结的一些IOCP编程技巧. 网络游戏前端服务器的需求和设计 首先介绍一下这个服务器的技术背景.在分布式网络游戏服务器中,前端连接服务器是一种很常见的设计. ...

  4. vector学习

    #include <iostream> #include <vector> #include <string.h> #include <algorithm&g ...

  5. (水题)洛谷 - P1583 - 魔法照片

    https://www.luogu.org/problemnew/show/P1583 设计一个strcut cmp用来比较,就可以了. #include<bits/stdc++.h> u ...

  6. python 闭包 闭包与装饰器之间的关系

    一.一个闭包的实际应用例子 def func(a, b): def inner(x): return a * x + b return inner inn = func(1, 1) print(inn ...

  7. spoj SUBLEX - Lexicographical Substring Search【SAM】

    先求出SAM,然后考虑定义,点u是一个right集合,代表了长为dis[son]+1~dis[u]的串,然后根据有向边转移是添加一个字符,所以可以根据这个预处理出si[u],表示串u后加字符能有几个本 ...

  8. CF1060E Sergey and Subway(点分治)

    给出一颗$N$个节点的树,现在我们**在原图中**每个不直接连边但是中间只间隔一个点的两个点之间连一条边. 比如**在原图中**$u$与$v$连边,$v$与$w$连边,但是$u$与$w$不连边,这时候 ...

  9. poj3417 闇の連鎖 【树上差分】By cellur925

    闇の連鎖(yam.pas/c/cpp)题目描述传说中的暗之连锁被人们称为 Dark.Dark 是人类内心的黑暗的产物,古今中外的勇者们都试图打倒它.经过研究,你发现 Dark 呈现无向图的结构,图中有 ...

  10. java实训 :异常(try-catch执行顺序与自定义异常)

    关键字: try:执行可能产生异常的代码 catch:捕获异常 finally:无论是否发生异常代码总能执行 throws:声明方法可能要抛出的各种异常 throw:手动抛出自定义异常 用 try-c ...