Javascript 技巧整理

 

  1. IE与FireFox都支持的onbeforeunload事件
    <script language="javascript">
        var blnCheckUnload = true;
        window.onbeforeunload = function(e) { 
            var e = window.event || e;
            if(blnCheckUnload) {
                e.returnValue="Are You Sure?";
            }
        }
    </script>
     
  2. 判断是不是IE最简单的方法 

    var isIE = document.all && window.external;
    var ie = !+"\v1";
    var ie = !-[1,];//对于标准游览器,如果数组里面最后一个字符为逗号,JS引擎会自动剔除它
    var notIE = -[1,];//目前最短
    if("\v"=="v") {
      document.write("这是IE浏览器");
    }
    else {
      document.write("这不是IE浏览器");
    }
    


    从jquery中摘除的代码:

    var userAgent = navigator.userAgent.toLowerCase();
    // Figure out what browser is being used
    var browser = {
    	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
    	safari: /webkit/.test( userAgent ),
    	opera: /opera/.test( userAgent ),
    	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
    	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
    }


  3. 如果需要重写dom对象的原型,并且增加方法的话,如果界面引入了prototype可能会导致重写失败,因为prototype也会重写原型。
    例如解析xml文件的方法如果要在FF和IE中通用的话需要覆盖XMLDocument.prototype.selectNodes
    Element.prototype.selectNodes
    XMLDocument.prototype.selectSingleNode
    Element.prototype.selectSingleNode
    如果界面引入prototype会导致重写失败。
  4. 关于向服务器端发送请求
    如果通过get方式向服务端发送请求,要注意参数的长度,根据微软的权威解释,IE的url最大长度是2083个字节,可以用于GET传递数据的长度是2048个字节。
    解决的方法是通过post方式替代原来的get方式。通过动态创建隐藏iframe,并在iframe中创建form,提交form到隐藏表单变相实现Ajax,提交form到新的界面便向实现window.open功能。
    如果参数中包含特殊字符需要将其用方法encodeURIComponent进行编码。
  5. Chrome浏览器的onload事件的处理
    如果使用的代码是:
    <script for=window event="onload">
    			
    </script>
     则需要注意:此方法在chrome中是没有作用的。而且如果在有frameset的界面中使用<body onload="">一样是没有作用的,建议使用添加事件监听的方式添加事件。

 

你可能感兴趣的:(JavaScript,IE,prototype,chrome,webkit)