將url中的指定引數替換的javascript程式碼例項

admin發表於2017-03-19
在實際應用中,可能需要替換url中引數的內容,下面就是一段能夠實現此功能的程式碼例項,寄希望能夠幫到有類似需求的朋友。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
function parseURL(url){ 
  var a = document.createElement('a'); 
  a.href = url; 
  return { 
    source: url, 
    protocol: a.protocol.replace(':', ''), 
    host: a.hostname, 
    port: a.port, 
    query: a.search, 
    params: (function () { 
      var ret = {}, 
      seg = a.search.replace(/^\?/, '').split('&'), 
      len = seg.length, i = 0, s; 
      for (; i < len; i++) 
      { 
        if (!seg[i]) { continue; } 
        s = seg[i].split('=');
        ret[s[0]] = s[1]; 
      } 
      return ret; 
    })(), 
    file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1], 
    hash: a.hash.replace('#', ''), 
    path: a.pathname.replace(/^([^\/])/, '/$1'), 
    relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1], 
    segments: a.pathname.replace(/^\//, '').split('/') 
  }; 
} 
//替換myUrl中的同名引數值 
function replaceUrlParams(myUrl, newParams) { 
  for (var x in newParams) 
  { 
    var hasInMyUrlParams = false; 
    for (var y in myUrl.params) 
    { 
      if (x.toLowerCase() == y.toLowerCase()) 
      { 
        myUrl.params[y] = newParams[x]; 
        hasInMyUrlParams = true; 
        break; 
      } 
    } 
    //原來沒有的引數則追加 
    if (!hasInMyUrlParams) 
    { 
      myUrl.params[x] = newParams[x]; 
    } 
  } 
  var _result = myUrl.protocol + "://" + myUrl.host + ":" + myUrl.port + myUrl.path + "?"; 
  for (var p in myUrl.params) 
  { 
    _result += (p + "=" + myUrl.params[p] + "&"); 
  } 
  if (_result.substr(_result.length - 1) == "&") 
  { 
    _result = _result.substr(0, _result.length - 1); 
  }
  if (myUrl.hash != "") 
  { 
    _result += "#" + myUrl.hash; 
  } 
  return _result; 
} 
//輔助輸出 
function w(str){ 
  console.log(str); 
} 
var myURL = parseURL('http://softwhy.com:8080/dir/index.html?id=255&m=hello#top'); 
w("myUrl.file = " + myURL.file)
w("myUrl.hash = " + myURL.hash)
w("myUrl.host = " + myURL.host)
w("myUrl.query = " + myURL.query)
w("myUrl.params = " + myURL.params)
w("myUrl.path = " + myURL.path)
w("myUrl.segments = " + myURL.segments)
w("myUrl.port = " + myURL.port)
w("myUrl.protocol = " + myURL.protocol)
w("myUrl.source = " + myURL.source)
var _newUrl = replaceUrlParams(myURL, { id: 101, m: "World", page: 1,"page":2 }); 
w("修改後的url:") 
w(_newUrl);

相關文章