首页 > PHP资讯 > HTML5培训技术 > js跨浏览操作

js跨浏览操作

HTML5培训技术
 
 
 
/*
 跨 ver 等事件  不需要添加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, '');
上一篇:jQueryTreeGrid
下一篇:jQuery拖拽&弹出层

HTML5培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持31不支持0