URL實用函數

  • 檢查是否爲有效的網址,弱檢測,只支持http和https。
/**
 * 檢查是否爲有效的網址
 * @ function isUrl
 * @ param {String} url 判斷給定URL是否爲一個有效的http(s)連接
 * @ return {Boolean}
*/
$.isUrl = function (url) {
    url = url.trim();
    return url && /^https?:\/\/[^\s]*$/.test(url);
};
  • 依據指定參數生成新的URL
/**
 * 依據指定參數生成新的URL
 * @ function createUrl
 * @ param {Object} params 用來構建查詢字符串的參數鍵值對
 * @ param {String} [baseUrl] 相對地址,默認爲window.location.pathname
 * @ return {String} 新的URL
*/
$.createUrl = function (params, baseUrl) {
    var url = baseUrl || win.location.pathname, ps = [];
    for (var p in params) ps.push(p + '=' + encodeURIComponent(params[p]));
    return url + (ps.length > 0 ? '?' + ps.join('&') : '');
};
  • 獲取單個查詢參數
/**
 * 獲取單個查詢參數
 * @ function getQueryString
 * @ param {String} name 待查找的參數名稱
 * @ return {String} 所查詢的參數值(已解碼);若是不存在,返回空串
*/
$.getQueryString = function (name) {
    if (!name) return '';
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = win.location.search.slice(1).match(reg);
    return r && r[2] !== null && r[2] !== undefined ? decodeURIComponent(r[2]) : '';
};
  • 獲取全部的查詢參數
/**
 * 獲取全部的查詢參數
 * @ function getQueryParams
 * @ param {String} [str] 形如"apple=red&banana=yellow"的字符串。默認是window.location.search。
 * @ return {Object} 參數名-參數值(已解碼)
*/
$.getQueryParams = function (str) {
    var arr;
    if (str) {
        if (str.indexOf('#') >= 0) str = str.slice(0, str.indexOf('#'));
        arr = str.split('&');
    } else if (win.location.search.length > 1) {
        arr = win.location.search.slice(1).split('&');
    } else {
        return {};
    }
    var r = {}, i, j;
    for (i=0;i<arr.length;i++) {
        j = arr[i].lastIndexOf('=');
        if (j < 0) {
            r[decodeURIComponent(arr[i])] = '';
        } else if (j > 0) {
            r[decodeURIComponent(arr[i].slice(0, j))] = decodeURIComponent(arr[i].slice(j+1));
        }
    }
    return r;
};
相關文章
相關標籤/搜索