1. 程式人生 > >兩個頁面相同js方法兼容

兩個頁面相同js方法兼容

efault val 取url參數 相同 bstr undefined 對象 blog def

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 = 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="a.js"></script>
2 <script src="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方法兼容