个性化阅读
专注于IT技术分析

JavaScript如何获取URL查询参数的属性和值?有没有相应的插件支持?

JavaScript如何获取URL查询参数的属性和值?有没有第三方相应的插件支持?

JS获取URL查询参数的方式有很多,主要方法如下:

1、使用URLSearchParams

// 使用URLSearchParams,除了IE的大部分浏览器都支持
var urlParams = new URLSearchParams(window.location.search);
var name = urlParams.get("name");
console.log(name);

2、使用JS正则表达式获取URL查询参数

// 使用正则表达式匹配
function getParamByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) 
        return null;
    if (!results[2]) 
        return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

var name = getParamByName("name");
console.log(name);

3、ES6获取URL查询参数

// ES6的方式
getQueryStringParams = query => {
    return query
        ? (/^[?#]/.test(query) ? query.slice(1) : query)
            .split('&')
            .reduce((params, param) => {
                    let [key, value] = param.split('=');
                    params[key] = value ? decodeURIComponent(value.replace(/\+/g, ' ')) : '';
                    return params;
                }, {}
            )
        : {}
};

4、使用jQuery插件

(function($) {
    $.QueryString = (function(paramsArray) {
        let params = {};

        for (let i = 0; i < paramsArray.length; ++i)
        {
            let param = paramsArray[i]
                .split('=', 2);

            if (param.length !== 2)
                continue;

            params[param[0]] = decodeURIComponent(param[1].replace(/\+/g, " "));
        }

        return params;
    })(window.location.search.substr(1).split('&'))
})(jQuery);

5、使用字符串split的方式截取URL查询参数

function get(n) {
    var half = location.search.split('&' + n + '=')[1];
    if (!half) half = location.search.split('?' + n + '=')[1];
    return half !== undefined ? decodeURIComponent(half.split('&')[0]) : null;
}
赞(0)
未经允许不得转载:srcmini » JavaScript如何获取URL查询参数的属性和值?有没有相应的插件支持?

评论 抢沙发

评论前必须登录!