js的兼容问题以及解决方式(持续更新)

我们在使用js操作页面的时候兼容问题是很常见的,下面将常见的兼容问题及其对应的解决方法分享给大家,并持续更新:

1、获取事件对象的兼容写法:

   IE中:window.event

   正常浏览器中:对象.on事件 = function(event){}      

//包装函数兼容写法:function fn(eve){
             var e = eve || window.event;
          }

2、键盘按键获取的兼容写法:

//先获取键盘事件对象  
var eve = eve || window.event
//在通过键盘事件对像获取键盘的 按键信息
//在非IE和IE中的兼容写法
var keyC = eve.keyCode || eve.which

3、

eve.cancelBubble = true;        //兼容IE

   eve.stopPropagation();           //其他浏览器  

1 //封装函数:  function stopBubble(e){
2     if(e.stopPropagtion){
3        e.stopPropagtion
4        }else{
5         eve.cancelBubble = true;
6        }
7 }

4、阻止浏览器默认事件兼容写法:

 e.preventDefault();         //兼容IE

window.event.returnValue = false;   //常规版

 还有一种无兼容问题方法:return  false;

 加在需要阻止默认事件的程序末尾;

//封装函数function stopDefault(e){
  if( e.preventDefault ){
        e.preventDefault();
    }else{
        window.event.returnValue = false;
    }}

5、事件的监听式绑定(DOM2级事件绑定)中绑定事件及去除事件的兼容写法:

  非IE:     oDiv.addEventListener(‘click‘,fn,false);   //添加事件

       oDiv.removeEventListener(‘click‘,fn ,false);   //删除事件

  IE :     oDiv.attachEvent();  //添加事件

         oDiv.detachEvent() ;   //删除事件

 1 //封装成两个函数的方式
 2     //添加事件
 3     function addEvent(obj,inci,back){
 4         if(obj.addEventListener){
 5             obj.addEventListener(inci,back);
 6         }else if(obj.attachEvent){
 7             obj.attachEvent("on" + inci,back);
 8         }else{
 9             obj["on"+inci] = back;
10         }
11     }
12     //去除事件
13     function removeEvent(obj,inci,back){
14         if(obj.removeEventListener){
15             obj.removeEventListener(inci,back,false);
16         }else if(obj.detachEvent){
17             obj.detachEvent("on" + inci,back);
18         }else{
19             obj["on"+inci] = null;
20         }
21     }

原文地址:https://www.cnblogs.com/liguanlong/p/11438434.html

时间: 2024-10-31 16:13:00

js的兼容问题以及解决方式(持续更新)的相关文章

记录某项目中的踩坑与解决(持续更新)

前言 最近参加了某个比赛, 我所选的赛题就是个类似知乎这样的安卓app,由于着手近一个月了,踩了不少坑,之前没怎么记录,估计事后也会忘记干净. 因此特开一帖,在此记录下相关的坑. 记录 写完某个Recyclerview的item布局和相关适配器后, 然后展示的时候, 发现显示出来的Item数量小于List中绑定的数据量: 首先是检查了一遍适配器中的逻辑,发现没啥问题.然后在onCreateViewHolder中打log,发现只创建了两次就没了(而实际应该创建6次). 最后百度才发现是外面的Scr

Django和Angular.js模板标签冲突的解决方式

参考文章:http://yanhua365.lofter.com/post/b417f_1f0361 http://stackoverflow.com/questions/8302928/angularjs-with-django-conflicting-template-tags http://blog.boxelderweb.com/2012/11/16/providing-django-template-variables-as-constants-to-angularjs/ 说在前面的话

js中兼容问题的解决

获取事件对象的兼容ie写法 1 var obox = document.querSelector(".box"); 2 3 obox.onclick = function(eve) { 4 var e = eve || window.event //ie只支持window.event 5 console.log(e); 6 } 阻止事件冒泡的兼容ie写法 1 function stopBubble(e){ //传入事件对象 2 if(e.stopPropagation){ 3 e.st

Android开发中的问题及相应解决(持续更新)

最近博客写的少了,以后还得经常更新才行. ------------------------------------------------------------ 1.try cath 异常不全导致的意外问题. 之所以将此问题放在第一位,是因为前阵子中项目中出现了此类情况,并且这种情况很容易不注意或遗忘,但其错误却是致命的. 在Java/Android开发中,当调用一个函数时,此函数抛出一个A类型的异常,很自然的,在调用的地方我们会try.. catch此异常,并且绝大多数情况下,捕获异常是由E

Android开发中Eclispe相关问题及相应解决(持续更新)

1.Eclipse项目中的Android Private Libraries没有自动生成. 一般而言,在Android开发中,项目中引用到的jar包会放到项目目录中的libs中,引入库会放到Android Dependencies中,对于放置于libs中的jar包,会自动置于项目中的Android Private Libraries下,如果没有自动生成,clean项目后一般在console下会发现有相应的错误提示,修正即可.如:项目中引用了不同的v4兼容包等会出现此类情况. 2.Eclipse中

js 自己常用的小小技巧(持续更新)

input 输入框获得/失去焦点时隐藏/显示文字 1 /*---------------输入框获取焦点文字显示,---------------*/ 2 function inputdefaule(inputbox){ 3 $(inputbox).on({ 4 focus:function(){ 5 if (this.value == this.defaultValue){ 6 this.value=""; 7 } 8 },blur:function(){ 9 if (this.valu

JS小案例(基础好烦恼少)----持续更新

1 *************************************************** 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Document</title> 7 8 </head> 9 <body> 10 本金10000元存入银行

IE兼容BUG汇总及解决方案(持续更新)

本篇为总结开发过程当中遇到的各种IE兼容性的小问题,比较复杂的会单开一篇文章来讲解. 另:我手头目前只有原生IE8,原生IE9,原生IE11,以及IE11模拟的IE5,7,8,9,10.因IE6太过古老而不再进行测试. 无法使用jquery的outerHTML的方式创建含有href属性的a标签(IE5-8) 问题复现: typeof $("<a href='xxx'>").get(0);//IE7-8:"undefined" typeof $("

Tomcat异常及解决办法——持续更新中

公司项目,开发语言为java,中间件为Tomcat,运行过程中,从Tomcat出现了一些异常,现将异常及解决办法记录如下,仅供参考.(不断在补充中.......) 异常一: 1.日志内容 org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be l