zoukankan      html  css  js  c++  java
  • js 跨浏览操作


    /*
     跨浏览器添加事件绑定
     obj : 需要绑定js时间的对象
     type:  欲绑定的事件类型,如:click ,mounseover 等事件  不需要添加on
     fn  :  触发的脚本
    */
    function addEvent(obj,type,fn){
      if(typeof obj.addEventListener !='undefined'){ //W3C
         obj.addEventListener(type,fn,false) ; //false表示不捕获冒泡
      }else{  //IE   IE提供的添加事件绑定存在问题
         //为了便于删除事件 特将对象绑定的事件都绑定在该对象本身上,删除的时候同样传递一个该对象即可
          if(!obj.events[type]){
          obj.events[type] = [] ; //创建一个存放事件处理函数的数组
        //把第一次的事件处理函数先储存到第一个位置上
      if(obj["on"+type]){
          obj.events[type][0] = fn;
      }
       }else{
          //同一个注册函数进行屏蔽,不添加到计数器中
       if (addEvent.equal(obj.events[type], fn)) return false;
       }
       //从第二次开始我们用事件计数器来存储
      obj.events[type][addEvent.ID++] = fn;
      //执行事件处理函数
      obj['on' + type] = addEvent.exec;
      
      }
    }

    //为每个事件分配一个计数器
    addEvent.ID = 1;

    //同一个注册函数进行屏蔽
    addEvent.equal = function (es, fn) {
     for (var i in es) {
      if (es[i] == fn) return true;
     }
     return false;
    }


     

    //执行事件处理函数
    addEvent.exec = function (event) {
     var e = event || addEvent.fixEvent(window.event);
     var es = this.events[e.type];
     for (var i in es) {
      es[i].call(this, e);
     }
    };


     
    //把IE常用的Event对象配对到W3C中去
    addEvent.fixEvent = function (event) {
     event.preventDefault = addEvent.fixEvent.preventDefault;
     event.stopPropagation = addEvent.fixEvent.stopPropagation;
     event.target = event.srcElement;
     return event;
    };


    //IE阻止默认行为
    addEvent.fixEvent.preventDefault = function () {
     this.returnValue = false;
    };

    //IE阻止默认行为
    addEvent.fixEvent.preventDefault = function () {
     this.returnValue = false;
    };

    //跨浏览器删除事件
    function removeEvent(obj, type, fn) {
     if (typeof obj.removeEventListener != 'undefined') { //W3C
      obj.removeEventListener(type, fn, false);
     } else {
      for (var i in obj.events[type]) {
       if (obj.events[type][i] == fn) {
        delete obj.events[type][i];
       }
      }
     }
    }


    //跨浏览器获取窗口可视大小
     
    function getInner(){
       if(typeof window.innerWidth !='undefined'){
         return {
         window.innerWidth ,
      height:window.innerHeight
      }
       }else{
         return {
          document.documentElement.clientWidth ,
       height:document.documentElement.clientHeight
      }
       }
    }


    //跨浏览器获取滚动条到左边的垂直宽度
    function getScollLeft(){
            var scrollPos; 
            if (window.pageXOffset) { 
            scrollPos = window.pageXOffset; } 
            else if (document.compatMode && document.compatMode != 'BackCompat') 
            { scrollPos = document.documentElement.scrollLeft; } 
            else if (document.body) { scrollPos = document.body.scrollLeft; }  
            return scrollPos; 
    }


    //跨浏览器获取滚动条到顶部的垂直高度
    function getScrollTop() { 
            var scrollPos; 
            if (window.pageYOffset) { 
            scrollPos = window.pageYOffset; } 
            else if (document.compatMode && document.compatMode != 'BackCompat') 
            { scrollPos = document.documentElement.scrollTop; } 
            else if (document.body) { scrollPos = document.body.scrollTop; }  
            return scrollPos;  
    }

    //跨浏览器获取Style
    function getStyle(element, attr) {
     if (typeof window.getComputedStyle != 'undefined') {//W3C
      return window.getComputedStyle(element, null)[attr];
     } else if (typeof element.currentStyle != 'undeinfed') {//IE
      return element.currentStyle[attr];
     }
    }


    //判断class是否存在
    function hasClass(element, className) {
     return element.className.match(new RegExp('(\s|^)' +className +'(\s|$)'));
    }


    //跨浏览器添加link规则
    function insertRule(sheet, selectorText, cssText, position) {
     if (typeof sheet.insertRule != 'undefined') {//W3C
      sheet.insertRule(selectorText + '{' + cssText + '}', position);
     } else if (typeof sheet.addRule != 'undefined') {//IE
      sheet.addRule(selectorText, cssText, position);
     }
    }

    //跨浏览器移出link规则
    function deleteRule(sheet, index) {
     if (typeof sheet.deleteRule != 'undefined') {//W3C
      sheet.deleteRule(index);
     } else if (typeof sheet.removeRule != 'undefined') {//IE
      sheet.removeRule(index);
     }
    }

    //获取Event对象
    function getEvent(event){
      return event || window.event;
    }

    //阻止默认行为
    function preDef(event) {
     var e = getEvent(event);
     if (typeof e.preventDefault != 'undefined') {//W3C
      e.preventDefault();
     } else {//IE
      e.returnValue = false;
     }
    }


    //删除左后空格
    function trim(str) {
     return str.replace(/(^s*)|(s*$)/g, '');
    }

     
     

  • 相关阅读:
    linux scull 函数open 方法
    linux scull 中的设备注册
    linux 字符设备注册
    linux inode 结构
    linux设备驱动文件结构
    linux一些重要数据结构
    Python3.2官方文档翻译--输出格式化
    1021. Deepest Root (25)
    hdu 4779 Tower Defense (思维+组合数学)
    cookie是什么? -- web
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3493284.html
Copyright © 2011-2022 走看看