预览模式: 普通 | 列表

获取js后所带的参数,如:a.js?a=value1&b=value2

将以下代码保存为:a.js 

JavaScript代码
  1. function querystring(){      
  2.     this.params = new Object();      
  3.     this.initialize = function(){      
  4.         var param=this.paramstring();      
  5.         if(param.length == 0) return;      
  6.         if(param.substring(0,1)=='?'){      
  7.             param=param.substring(1);      
  8.         }      
  9.         param = param.replace(/\+/g, ' ');      
  10.         var args = param.split('&');          
  11.         for (var i=0;i<args.length;i++){      
  12.             var value;      
  13.             var pair = args[i].split('=');      
  14.             var name = unescape(pair[0]);      
  15.             if (pair.length == 2)      
  16.                 value = unescape(pair[1]);      
  17.             else     
  18.                 value = name;             
  19.             this.params[name] = value;      
  20.         }      
  21.     };      
  22.     this.get = function(key, defvalue){      
  23.         return this.params[key]==null?defvalue:this.params[key];      
  24.     };      
  25.     this.paramstring = function(){       
  26.         var col=document.getElementsByTagName("script");       
  27.         var jsrc=col.item(col.length-1).src;       
  28.         var i=jsrc.indexOf("?");       
  29.         var words=jsrc.substr(i+1,jsrc.length);       
  30.         return(words);       
  31.     };      
  32.     this.initialize();      
  33. }      
  34.      
  35. var q = new querystring();      
  36. var a = q.get('a','defaultvalue'); //defaultvalue是默认值      
  37. var b = q.get('b','defaultvalue'); //defaultvalue是默认值   

调用:    

XML/HTML代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <script type="text/javascript" src="a.js?a=baidu&b=google"></script>  
  6. <title>无标题文档</title>  
  7. </head>  
  8.   
  9. <body>  
  10. <!--   
  11.   js运行结果将得到:   
  12.   a=baidu  
  13.   b=google  
  14. -->  
  15. </body>  
  16. </html>  

 

是不是很有趣呢?呵呵~~

Javacript+xml+DOM 浏览器兼容性问题

javacript中对xml dom的支持,与其他任何特性一样面临着浏览器兼容问题。

一 IE中的XML DOM
1.微软通过ActiveX的MSXML库提供了支持,通过:
var oXmlDom = new ActiveXObject("MSXML2.DOMDocument.5.0")得到一个XML DOM对象,这是在IE6中的,如果你的IE是更老版本的,可以使用下面的函数得到,如果你没有安装MSXML,将不能得到:

[code]
function createXMLDOM() {

var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",

[阅读全文]

标签: javascript xml dom

一个简单的Ajax类

JavaScript代码
  1. /**  
  2.     Powered By CMSDream Copyright © 2007-2008 All rights reserved.  
  3.     14:21 2008-5-10  
  4. **/  
  5. function CMSDreamAjaxLib(){   
  6.     /**//**  
  7.     成员变量  
  8.     */  
  9.     this.XMLHttpReq = null;         //XML对象   
  10.     this.method = "post";           //执行的方法(post/get)   
  11.     this.url = "";              //异步调用的页面地址   
  12.     this.responseText = "";         //异步返回的响应字符串   
  13.     this.responseXML = "";          //异步返回的响应XML   
  14.     this.failed = false;            //创建对象错误标志   
  15.        
  16.     /**//**  
  17.     事件区  
  18.     */  
  19.     this.onLoading = function() {};     //正在发送请求   
  20.     this.onLoaded = function() {};      //已经接收到全部响应内容   
  21.     this.onInteractive = function() {}; //正在解析响应内容   
  22.     this.onCompletion = function() {};  //响应内容解析完成   
  23.     this.onError = function() {};       //异步错误处理事件   
  24.     this.onFail = function() {};        //创建对象失败处理世界   
  25.        
  26.     /**//**  
  27.     重置所有事件函数  
  28.     */  
  29.     this.resetFunctions = function() {   
  30.         this.onLoading = function() {};   
  31.         this.onLoaded = function() {};   
  32.         this.onInteractive = function() {};   
  33.         this.onCompletion = function() {};   
  34.         this.onError = function() {};   
  35.         this.onFail = function() {};   
  36.     };   
  37.     
  38.     /**//**  
  39.     初始化函数(构造时自动初始化)  
  40.     */  
  41.     this.init = function(){   
  42.         if(window.XMLHttpRequest){   
  43.             this.XMLHttpReq = new XMLHttpRequest();   
  44.         }else if (window.ActiveXObject){   
  45.             try{this.XMLHttpReq = new ActiveXObject("Msxml4.XMLHTTP");}   
  46.             catch(e){   
  47.                 try{this.XMLHttpReq = new ActiveXObject("Msxml3.XMLHTTP");}   
  48.                 catch(e){   
  49.                     try{this.XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");}   
  50.                     catch(e){   
  51.                         try{this.XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");}   
  52.                         catch(oc){this.failed=true;}   
  53.                     }   
  54.                 }   
  55.             }   
  56.         }   
  57.     };   
  58.        
  59.     /**//**  
  60.     发送请求函数  
  61.     @param data 发送的数据  
  62.     @example send("id=1");  
  63.     */  
  64.     this.send=function(data){   
  65.         var self=this;   
  66.         if(this.method=="post") {   
  67.             this.XMLHttpReq.open(self.method,self.url,true);   
  68.         }else{   
  69.             this.XMLHttpReq.open(self.method,self.url+"?"+encodeURI(data),true);   
  70.         }   
  71.         //添加消息响应头   
  72.         this.XMLHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");   
  73.            
  74.         //异步回调函数   
  75.         this.XMLHttpReq.onreadystatechange = function(){   
  76.             //对象未创建   
  77.             if (self.failed) {   
  78.                 self.onFail();   
  79.                 return;   
  80.             }   
  81.                
  82.             //消息响应标志   
  83.             switch (self.XMLHttpReq.readyState) {   
  84.                 case 1:{   
  85.                     self.onLoading();   
  86.                     break;   
  87.                 }   
  88.                 case 2:{   
  89.                     self.onLoaded();   
  90.                     break;   
  91.                 }   
  92.                 case 3:{   
  93.                     self.onInteractive();   
  94.                     break;   
  95.                 }   
  96.                 case 4:{   
  97.                     self.responseText = self.XMLHttpReq.responseText;   
  98.                     self.responseXML = self.XMLHttpReq.responseXML;   
  99.                     self.onCompletion();   
  100.                     break;   
  101.                 }   
  102.             }   
  103.         };   
  104.            
  105.            
  106.         if(this.method=="post"){   
  107.             this.XMLHttpReq.send(data); //发送请求   
  108.         }else{   
  109.             this.XMLHttpReq.send();     //发送请求   
  110.         }   
  111.     };   
  112.        
  113.     this.abort=function(){   
  114.         this.XMLHttpReq.abort();   
  115.     }   
  116.        
  117.     this.close=function(){   
  118.         this.XMLHttpReq=null;   
  119.     }   
  120.     this.init();   
  121. }  
标签: ajax javascript

动态加载样式元素的函数(兼容IE,FireFox,Opera)

如题,目前只对IE,FireFox,Opera这三种浏览器的兼容性进行过测试,其它浏览器还未测试。

有兴趣的朋友可以研究一下,应该也没问题的。

JavaScript代码
  1. function AttachStyle(styDom, styCss, styId){   
  2.     var istyle = styDom.createElement('style');   
  3.     istyle.setAttribute("type""text/css");   
  4.     if(styId!=null){if(!document.getElementById(styId)){istyle.setAttribute("id", styId);}}   
  5.     if (istyle.styleSheet){   
  6.         istyle.styleSheet.cssText=styCss;   
  7.     }else{   
  8.         istyle.appendChild(styDom.createTextNode(styCss));   
  9.     }   
  10.     styDom.getElementsByTagName("head")[0].appendChild(istyle);   
  11. }  

应用代码:

JavaScript代码
  1. if(!document.getElementById('attach-css-1')){      
  2.     var iCss='';      
  3.     iCss+='.test-style1 {font-size:18px;color:#f60;}';      
  4.     iCss+='.test-style2 {font-size:16px;color:#f60;}';      
  5.     iCss+='.test-style3 {font-size:14px;color:#f60;}';      
  6.     iCss+='.test-style4 {font-size:12px;color:#f60;}';      
  7.     AttachStyle(document,iCss,'attach-css-1');      
  8. }      
  9.      
  10. /**    
  11. 大家可以测试一下 test-style1,test-style2,test-style3 这三个样式变化了吗?    
  12. **/  

在非IE浏览器下兼容IE的event

JavaScript代码
  1. if(!document.all){   
  2.     HTMLElement.prototype.__defineGetter__("runtimeStyle"function(){   
  3.         return this.style;   
  4.     });    
  5.     window.constructor.prototype.__defineGetter__("event"function(){   
  6.         return __window_event_constructor();    
  7.     });   
  8.     Event.prototype.__defineGetter__("srcElement"function(){   
  9.         return this.target;   
  10.     });   
  11.     function __window_event_constructor(){    
  12.         if(document.all){    
  13.             return window.event;    
  14.         }    
  15.         var _caller = __window_event_constructor.caller;    
  16.         while(_caller!=null){    
  17.             var _argument = _caller.arguments[0];    
  18.             if(_argument){    
  19.                 var _temp = _argument.constructor;    
  20.                 if(_temp.toString().indexOf("Event")!=-1){    
  21.                     return _argument;    
  22.                 }    
  23.             }    
  24.             _caller = _caller.caller;    
  25.         }    
  26.         return null;    
  27.     }   
  28. }  

 

只要在页面运行时加上以上代码,非IE浏览器也可以使用IE特有的event事件了。 :)

非常好用的Js的querystring类

JavaScript代码
  1. /**  
  2.     Powered By CMSDream Copyright © 2007-2008 All rights reserved.  
  3.     15:10 2008-6-7  
  4. **/  
  5. function querystring(paramstring){   
  6.     this.url=window.location.href;   
  7.     this.params = new Object();   
  8.     this.initialize = function(){   
  9.         if(paramstring.length == 0) return;   
  10.         if(paramstring.substring(0,1)=='?'){   
  11.             paramstring=paramstring.substring(1);   
  12.         }   
  13.         paramstring = paramstring.replace(/\+/g, ' ');   
  14.         var args = paramstring.split('&');     
  15.         for (var i=0;i<args.length;i++){   
  16.             var value;   
  17.             var pair = args[i].split('=');   
  18.             var name = unescape(pair[0]);   
  19.             if (pair.length == 2)   
  20.                 value = unescape(pair[1]);   
  21.             else  
  22.                 value = name;          
  23.             this.params[name] = value;   
  24.         }   
  25.     };   
  26.     this.get = function(key, defvalue){   
  27.         return this.params[key]==null?defvalue:this.params[key];   
  28.     };   
  29.   
  30.     this.setkey = function(key,value){   
  31.         var fragPos = this.url.lastIndexOf("#");   
  32.         var fragment = "";   
  33.         if(fragPos > -1){   
  34.             fragment = this.url.substring(fragPos);   
  35.             this.url = this.url.substring(0,fragPos);   
  36.         }   
  37.         var querystart = this.url.indexOf("?");   
  38.         if(querystart<0){   
  39.             this.url +="?"+key+"="+value;   
  40.         }else if(querystart==this.url.length-1){   
  41.             this.url +=key+"="+value;   
  42.         }else{   
  43.             var Re = new RegExp(key+"=[^\\s&#]*","gi");   
  44.             if (Re.test(this.url)){   
  45.                 this.url=this.url.replace(Re,key+"="+value);   
  46.             }else{   
  47.                 this.url += "&"+key+"="+value;   
  48.             }   
  49.         }   
  50.         return this.url;   
  51.     };   
  52.     this.initialize();   
  53. }  

调用代码:

JavaScript代码
  1. //假设网址为:http://www.a.com/aa.htm?a=value1&b=value2      
  2. var q = new qerystring(location.search);      
  3.      
  4. //如果取不到值用第二个参数作为默认值。      
  5. var a = q.get('a','defaultvalue');       
  6. var b = q.get('b','defaultvalue');      
  7.      
  8. /*    
  9.  运行结果:    
  10.   a=value1    
  11.   b=value2    
  12. */    
  13.   
  14. /***********************************  
  15.  如果要将网址插入一个参数  
  16.  如:http://www.a.com/aa.htm?a=value1&b=value2&page=3  
  17. ************************************/  
  18. var q = new qerystring(location.search);   
  19. var url = q.setkey('page','3');   
  20.   
  21. //url 是所得的结果  
  • 1