好的js函数

得到文档内容的宽度和高度

function getElementport(){
    if(document.compatMode=="BackCompat"){
        return {
            Math.max(document.body.scrollWidth,document.body.clientWidth),
            height:Math.max(document.body.scrollHeight,document.body.clientHeight)
        }   
    }else{
        return {
            Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),
            height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)   
        }   
    }
}

得到元素偏移量

function getElementLeft(element){
var left=element.offsetLeft;
var parent=element.offsetParent;
while(parent!=null){
left+=parent.offsetLeft;
parent=parent.offsetParent;
}
return left;
}

在ie中的createDocument();

function o_createDocument(){
    if(typeof arguments.callee.activeXString!="string"){
        var versions=["MSXML2.DOMDcument.6.0","MSXML2.Document.3.0","MSXML2.Document"],
        i,
        len;
        for(i=0,len=versions.length;i<len;i++){
            try{
                new ActiveXObject(versions[i]);
                arguments.callee.activeXString=versions[i];
                break;
            }catch(ex){
            }
        }
    }
    return new ActiveXObject(arguments.callee.activeXString);
}

这个函数的思想非常好,第一点,首先通过判断函数这个对象有没有activexString这个对象,因为这个函数只要执行一次,就会存在activexString这个变量,第二次执行就不会重复生成;第二点,就是通过try-catch语句来解决兼容性问题,真是聪明之极,如果有错误,就转到catch语句中,不执行下面语句,但是循环继续进行,这太好了;

原生ajax函数

function get_ajax(url,param,func,type){
 if(param){
  for(var i in param){
   url+=url.indexOf("?")==-1?"?":"&";
   url+=i+"="+param[i];
  }
 }
 var xhr=new XMLHttpRequest();
 xhr.onreadystatechange=function(){
  if(xhr.readyState==4){
   if(xhr.status>=200&&xhr.status<300||xhr.status==304){
    func(xhr.responseText);
   }
  }
 }
 xhr.open("get",url,type)
 xhr.send(null);
} 

  

原文地址:https://www.cnblogs.com/nier/p/2472734.html