zoukankan      html  css  js  c++  java
  • 好的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);
    } 
    

      

  • 相关阅读:
    c++ 内存管理
    socket粘包现象加解决办法
    TCP与UDP比较 以及并发编程基础知识
    进程之 Process join方法其他属性与进程Queue
    socket通讯实例与TCP/UDP的区别
    socket介绍
    python中的异常处理机制
    面向对象之多态,多态性,反射,以及基于反射的可拔插设计
    面向对象之元类介绍
    面向对象基础
  • 原文地址:https://www.cnblogs.com/nier/p/2472734.html
Copyright © 2011-2022 走看看