首页 > 代码库 > 两个页面相同js方法兼容

两个页面相同js方法兼容

1. a.js页面

 

 1 //Js获取Url参数 2 function request(paras) { 3     var url = location.href; 4     var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&"); 5     var paraObj = {}; 6     for (i = 0; j = paraString[i]; i++) { 7         paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") + 1, j.length); 8     } 9     var returnValue =http://www.mamicode.com/ paraObj[paras.toLowerCase()];10     if (typeof (returnValue) == "undefined") {11         return "";12     } else {13         return returnValue;14     }15 }

2. b.js页面

1 //获取url中的参数2 var request =3 {4     QueryString: function (val) {5         var uri = window.location.search;6         var re = new RegExp("" + val + "=([^&?]*)", "ig");7         return ((uri.match(re)) ? (uri.match(re)[0].substr(val.length + 1)) : null);8     }9 };

C页面同时引用a.js和b.js,a.js在前,b.js在后。因为a.js页面和b.js页面都有request对象,导致a.js里的request(paras)方法无效。

访问地址:http://localhost:36164/Default.aspx?11=12

1 <script src="http://www.mamicode.com/a.js"></script>2 <script src="http://www.mamicode.com/b.js"></script>3     <script >4 5         var o = request("11");6         alert(o);7         o =  request.QueryString("11");8         alert(o);9     </script>

 

技术分享

 

解决方法:

调用b.js的request方法

1 if (typeof (request) == "undefined") {2     request = function () { };3 }4 request.QueryString = function (val) {5     var uri = window.location.search;6     var re = new RegExp("" + val + "=([^&?]*)", "ig");7     return ((uri.match(re)) ? (uri.match(re)[0].substr(val.length + 1)) : null);8 }

 

结果:

技术分享

 

两个页面相同js方法兼容