<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. 【POI 2006】 Tet-Tetris-3D

    [题目链接] 点击打开链接 [算法] 二维线段树(树套树) 注意标记永久化 [代码] #include<bits/stdc++.h> using namespace std; #defin ...

  2. 聊聊Java SPI机制

    一.Java SPI机制 SPI(Service Provider Interface)是JDK内置的服务发现机制,用在不同模块间通过接口调用服务,避免对具体服务服务接口具体实现类的耦合.比如JDBC ...

  3. absolute属性与IE6/IE7之间的误会

    三.absolute属性与IE6/IE7之间的误会 absolute属性确实存在不少兼容性的问题,首先absolute属性定位相关(left/top)的些bug(例如IE6的奇偶bug)这里不予以讨论 ...

  4. 关于HTTP请求中更改body中传递的参数方法

    更改body中传递的参数方法: String txId = UUID.randomUUID().toString().replaceAll("-", ""); ...

  5. django-ckeditor表情包修改

    一.版本 Django==1.11 django-ckeditor==5.2.2 二.关键步骤 1.删除旧的ckeditor静态文件 所在目录:项目目录下的static文件夹下的ckditor文件夹 ...

  6. oracle错误:1067进程意外终止

    oracle错误:1067进程意外终止我Oracle安装完了之后可以运行的 ,过了一段时间不可以了,就上网找了一下,原来是自己的ip已经改变.我一直使用IP地址的. 将D:\oracle\produc ...

  7. hive的使用 + hive的常用语法

    本博文的主要内容有: .hive的常用语法 .内部表 .外部表 .内部表,被drop掉,会发生什么? .外部表,被drop掉,会发生什么? .内部表和外部表的,保存的路径在哪? .用于创建一些临时表存 ...

  8. the little schemer 笔记(7)

    第七章 Friends and Relations 这是一个set集合吗 (apple peaches apple plum) 不是,apple出现了不止一次 (set? lat) 是真还是假,其中l ...

  9. python之unittest

    unittest是单元测试的一个框架 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoade ...

  10. Random Query CodeForces - 846F

    题目 翻译: 给出一个n个数字的数列a[1],...,a[n],f(l,r)表示使a[l],a[l+1],...,a[r]组成的新序列中的重复元素只保留一个后,剩下元素的数量(如果l>r,则在计 ...