javascript對url相關操作功能封裝程式碼例項

admin發表於2017-04-02

本章節分享一段程式碼例項,它實現了對url地址相關操作的一些封裝。

比如比較常見的獲取傳遞的url引數值,當然還有其他的功能。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
Angela.url = { //#URL
  //引數:變數名,url為空則表從當前頁面的url中取
  getQuery: function (name, url) {
    var u = arguments[1] || window.location.search
      , reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)")
      , r = u.substr(u.indexOf("?") + 1).match(reg)
    ;
    return r != null ? r[2] : "";
  }
  , getHash: function (name, url) { //# 獲取 hash值
    var u = arguments[1] || location.hash;
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = u.substr(u.indexOf("#") + 1).match(reg);
    if (r != null) {
      return r[2];
    }
    return "";
  }
  , parse: function (url) { //# 解析URL
    var a = document.createElement('a');
    url = url || document.location.href;
    a.href = url;
    return {
      source: url
      , protocol: a.protocol.replace(':', '')
      , host: a.hostname
      , port: a.port
      , query: a.search
      , 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('/')
    };
  }
};

相關文章