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 {

     width:window.innerWidth ,

  height:window.innerHeight

  }

   }else{

     return {

      width: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, '');

You May Also Like