Javascript的URL处理:
1,UrlUtil.js
function UrlUtil() { }; /// <summary> /// Url帮助函数库 /// </summary> UrlUtil.getURLParameters = function() { /// <summary> /// alert显示参数 /// </summary> var sURL = window.document.URL.toString(); if (sURL.indexOf("?") > 0) { var arrParams = sURL.split("?"); var arrURLParams = arrParams[1].split("&"); var arrParamNames = new Array(arrURLParams.length); var arrParamValues = new Array(arrURLParams.length); var i = 0; for (i = 0; i < arrURLParams.length; i++) { var sParam = arrURLParams[i].split("="); arrParamNames[i] = sParam[0]; if (sParam[1] != "") arrParamValues[i] = unescape(sParam[1]); else arrParamValues[i] = "No Value"; } for (i = 0; i < arrURLParams.length; i++) { alert(arrParamNames[i] + " = " + arrParamValues[i]); } } else { alert("No parameters."); } }; /** * Add a parameter to the url */ UrlUtil.addParameter = function(href, name, value) { ///<summary> ///添加参数,若是更改,请先移除再添加之 ///</summary> var delimiter; if (href.indexOf("?") == -1) delimiter = "?"; else delimiter = "&"; return href + delimiter + name + "=" + value; }; /** * remove the parameter from an url */ UrlUtil.removeParameter = function(href, name) { ///<summary> ///移除参数,works only for a single paramter ///</summary> var tmp = href.split("?"); var newHref = tmp[0]; var query = new Array(); if (tmp[1]) { var paramObj = tmp[1].split("&"); for (var i = 0; i < paramObj.length; i++) { if (paramObj[i].indexOf(name + "=") != 0) { query.push(paramObj[i]); } } } if (query.length > 0) { newHref += "?"; for (var i = 0; i < query.length; i++) { newHref += query[i]; if (i + 1 < query.length) { newHref += "&"; } } } return newHref; }; /** * Is this an external URL containing :// */ UrlUtil.isExternal = function(url) { ///<summary> ///Url是否包含"://"符号串 ///</summary> return url.indexOf("://") != -1; };
2,调用:
<mce:script type="text/javascript" language="javascript"><!-- //UrlUtil.getURLParameters(); /* var url = window.location.href; var url_new1 = UrlUtil.addParameter(url, 'Pkid', 1009); alert(url_new1); var url_new2 = UrlUtil.removeParameter(url_new1, 'Pkid'); alert(url_new2); var url_new44 = UrlUtil.removeParameter(url_new1, 'Pkidddd'); alert(url_new44); var url_new3 = UrlUtil.addParameter(url_new2, 'Pkid', 1876); alert(url_new3); */ //alert(window.document.URL); //alert(location.href); // --></mce:script>
3,访问参数各种不完全的情况:
http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm 没有参数 http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm? =undefined http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm?key1 key1=undefined http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm?key1= key1=NoValue http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm?key1=3 key1=3 http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm?key1=3& key1=3 =undefined http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm?key1=3&key2 key1=3 key2=undefined http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm?key1=3&key2= key1=3 key2=NoValue http://localhost:1206/WebSite_Url_Login/HTMLPage3.htm?key1=3&key2=55 key1=3 key2=55
4,window.document.URL与location.href的区别:
document.URL是访问的文档URL,而window.location.href是真实的文档URL
服务器重定向后有可能使document.url变动,但window.location.href指的永远是访问该网页时用的URL.
document.URL 只读,location.href 可写