JavaScript 兼容性总结
来源:互联网 发布:数据录入员待遇好么 编辑:程序博客网 时间:2024/06/02 06:50
获取滚动距离的兼容//非chromedocument.documentElement.scrollTop document.documentElement.scrollLeft//chromedocument.body.scrollTopdocument.body.scrollLeft//兼容写法:由于浏览器只支持其中一种,另一种为0,因此采用相加的方式var scrolltop = document.documentElement.scrollTop + document.body.scrollTop//更为稳妥的兼容写法:var scrolltop = document.documentElement.scrollTop || document.body.scrollTop
getElementsByClassName() // IE 低版本浏览器中无此方法 if(!document.getElementsByClassName){ //如果不存在该方法 document.getElementsByClassName = function(classname){ //则手动创建 var arr = []; var all = document.getElementsByTagName("*"); for(var i=0; i<all.length; i++){ if(all[i].className.indexOf(classname+" ") != -1){ arr.push(all[i]); } } return arr; } }
JS获取非行内样式window.getComputedStyle(ele, null) //非IEele.currentStyle //IEfunction getStyle(obj, attr) { if(obj.currentStyle) { //IE浏览器 return obj.currentStyle[attr]; } else { return getComputedStyle(obj,null)[attr]; }}
获取Event对象的兼容写法obj.onclick= function(evt){ var e = evt || window.event; // 常规浏览器 || IE}
全世界最短IE6判定
if(!-[1,]) { //IE6 在IE6中[-1,].toString()为“1,”,‘-’会进行类型转换(转成数字类型),-"1," 为NaN,所以返回!false } else{ //非IE6 非IE6中[-1,].toString()为“1”,‘-’会进行类型转换(转成数字类型),-"1" 为-1,所以返回!true}
全世界最无争议IE判定
if(window.VBArray){ //因为VB是微软发明的,其他浏览器无VBArray,至少可判定IE 6/7/8/9/10 } else {}
键盘码获取
document.onkeypress=function(e){e = e || window.event;e.keyCode || e.which // 常规浏览器 || IE}
阻止事件传播(冒泡)
e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; // 常规浏览器 || IE
注:这里不可使用 e.cancelBubble?e.cancelBubble = true : e.stopPropagation()
因为 e.cancelBubble 是一个属性(而非方法),其默认值为 false
event.target (事件委托时,触发事件源)
var srcObj = event.target || event.srcElement;
阻止默认行为
event.preventDefault(); //常规浏览器event.returnValue = false; // IEe.preventDefault ? e.preventDefault() : e.returnValue=false;
事件监听
obj.addEventListener("click",function(){},true); //非IEobj.attachEvent("onclick", function(){}); //IEfunction addEvent(ele, eventType, func, isCapture){ if(ele && ele.attachEvent){ // ele.attachEvent("on"+eventType, func); } else { ele.addEventListener(eventType, func, isCapture||false); }}
//懒加载函数function addEvent(obj, eventname, func, isCapture){if(window.VBArray){obj.attachEvent("on"+eventname, func);addEvent = function(obj, eventname, func){ .//第一次执行后替换原函数obj.attachEvent("on"+eventname, func);}} else {obj.addEventListener(eventname, func, !!isCapture);addEvent = function(obj, eventname, func, isCapture){obj.addEventListener(eventname, func, !!isCapture);}}}
函数柯里化
var addEvent = (function(){ if(window.attachEvent) { return function(obj, eventType, func){ obj.attachEvent("on"+eventType, func); } } else { return function(obj, eventType, func, isCapture) { obj.addEventListener(eventType, func, isCapture||false); } }})();
删除某元素监听事件
(function removeEvent(){if(window.VBArray) {return function(ele, eventName, callback) {ele.detach("on" + eventName, callback);}}return function(ele,eventName,callback,isCapture){ele.removeEventListener(eventName,callback);}})();
request对象的兼容(ajax请求中使用)
new ActiveXObject("Msxml2.XMLHTTP") //IEvar req = ActiveXObject?new ActiveXObject("Msxml2.XMLHTTP"):new XMLHttpRequest() ;
阅读全文
0 0
- JavaScript 兼容性总结
- Javascript的IE和Firefox兼容性总结
- IE,Firefox对Javascript兼容性总结
- IE和Firefox的Javascript兼容性总结
- IE和Firefox的Javascript兼容性总结
- IE和Firefox的Javascript兼容性总结
- IE和Firefox的Javascript兼容性总结
- css与javascript跨浏览器兼容性总结
- IE和Firefox的Javascript兼容性总结
- IE和Firefox的Javascript兼容性总结
- 【总结】IE和Firefox的Javascript兼容性总结javascript
- javascript兼容性
- 【总结】IE和Firefox的Javascript兼容性总结
- 【总结】IE和Firefox的Javascript兼容性总结(转)
- 【总结】IE和Firefox的Javascript兼容性总结
- 【总结】IE和Firefox的Javascript兼容性总结
- 【总结】IE和Firefox的Javascript兼容性总结
- 【总结】IE和Firefox的Javascript兼容性总结
- 决策树算法(DecisionTree)
- Battery Charging Summary
- 如何实现身份证输入框的输入效果
- Session的生命周期
- python获取网页源代码后在网站上显示
- JavaScript 兼容性总结
- Large Margin Object Tracking with Circulant Feature Maps
- Java如何转换图片的格式?
- popuwindow覆盖手机键盘
- 内存泄漏的问题如何解决(linux)
- Redhat7对于ifconfig命令问题的解决方法
- 剑指offer_二叉树---把二叉树打印成多行
- 精华【分布式微服务云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!
- Python查询Mysql, sqlite时返回字典结构的代码