原生JS--各种兼容性写法总结
<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--各种兼容性写法总结的更多相关文章
- 原生js模拟jquery写法
function $_custom(fun) { document.onreadystatechange = function() { if (document.readyState == " ...
- 原生js浏览器兼容性问题
1.HTML对象获取问题 FireFox:document.getElementById(“idName”); ie:document.idname或者document.getElementById( ...
- onload事件与ready事件的区别,原生js与jquery的区别
onload事件与ready事件分别是原生js与jquery的入口函数 原生js入口函数写法: window.onload=function(){ } jquery入口函数写法: $(document ...
- 常用原生JS方法总结(兼容性写法)
经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...
- addEventListener和attachEvent介绍, 原生js和jquery的兼容性写法
也许很多同仁一听到事件监听,第一想到的就是原生js的 addEventListener()事件,的确如此,当然如果只是适用于现代浏览器(IE9.10.11 | ff, chorme, safari, ...
- 常用原生JS兼容性写法汇总
1.添加事件方法 addHandler:function(element,type,handler){ if(element.addEventListener){//检测是否为DOM2级方法 elem ...
- 原生JS与jQuery文档加载完毕的写法
HTML是有执行顺序的,默认是自上而下执行.所以当我们的js代码在html代码下边的时候,可以正常执行,而当我们的js代码在html代码上边的时候,可以就无法正常执行了,这时,我们需要在文档加载完毕的 ...
- 原生js方法document.getElementsByClassName在ie8及其以下的兼容性问题
document.getElementsByClassName在ie8及其以下浏览器的兼容性问题,在ie8及其以下浏览器中不能使用,针对这个问题,下面给出详细的解决方法,感兴趣的朋友可以参考下 ...
- 原生JS forEach()和map()遍历的区别以及兼容写法
一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...
随机推荐
- pkill详解
pkill详解 一:含义: 是ps命令和kill命令的结合,按照进程名来杀死指定进程,pkill和killall应用方法差不多,也是直接杀死运行中的程序:如果您想杀掉单个进程,请用kill来杀掉. 二 ...
- javascript 布尔类型
true和false 表达式为false的情况 1 false 2 NaN 3 0 4 字符串的空 " " 5 null 6 undefined
- Java 8的Lambda学习
参考资料:https://www.dotnetperls.com/lambda-java Lambdas用于创建函数对象.通过它们,我们可以在其它方法内部指定方法,甚至可以把方法做为参数传递给其它方法 ...
- HDU 2077 汉诺塔IV (递推)
题意:... 析:由于能最后一个是特殊的,所以前n-1个都是不变的,只是减少了最后一个盘子的次数,所以根据上一个题的结论 答案就是dp[n-1] + 2. 上一题链接:http://www.cnblo ...
- (水题)Codeforces - 650A - Watchmen
http://codeforces.com/contest/650/problem/A 一开始想了很久都没有考虑到重复点的影响,解欧拉距离和曼哈顿距离相等可以得到 $x_i=x_j$ 或 $y_i=y ...
- BestCoder Round #74 (div.1) 1002Shortest Path(hdoj5636)
哈哈哈哈,我就知道这道题目再扔给我,我还是不会,就是这么菜,哈哈哈 一开始官方题解就没搞懂-然后就看了一下别人的代码,水水过就算了.今天拿到-GG: 题意: 一开始,有一张原图,有一条长度为n的链. ...
- Unity里的人物驱动/换装备/换武器/换衣服/卡通重定位(转)
Unity里的人物驱动/换装备/换武器/换衣服/动画重定位 刚学的过程被这个问题困扰最多. 首先,基本的,大家都知道驱动人物需要骨架.绑骨的Mesh和动画(这三个要是不知道的话就得考虑看看计算机图形学 ...
- StructLayoutLayout 属性无法通过GetCustomAttributes 或者 Attributes获得
http://stackoverflow.com/questions/17684664/retrieve-the-structlayout-attribute-of-a-struct 这是一个type ...
- spring AOP excution表达式各符号意思
execution(*com.sample.service.impl..*.*(..)) 符号 含义 execution() 表达式的主题 第一个“*”符号 表示返回值的类型任意: com.sampl ...
- php 中的引用(&)与foreach结合后的一个注意点
关于php中引用的概念及foreach循环的的应用就不多说了,php文档已经说的很明白了.直接上一段代码: <?php $arr = array(1,2, 3); foreach($arr as ...