js修改地址栏参数

代码如下

/**
 * changeURLStatic 修改地址栏 URL参数 不跳转
 * @param name
 * @param value
 */
function changeURLStatic(name, value) {
    
    
    let url = changeURLParam(location.href, name, value); // 修改 URL 参数
    history.replaceState(null, null, url);  // 替换地址栏
}
 
 
/**
 * changeURLParam 修改 URL 参数
 * @param url
 * @param name
 * @param value
 * @returns {string}
 */
function changeURLParam(url, name, value) {
    
    
    if (typeof value === 'string') {
    
    
        value = value.toString().replace(/(^\s*)|(\s*$)/, ""); // 移除首尾空格
    }
    let url2;
    if (!value) {
    
     // remove
        let reg = eval('/(([\?|&])' + name + '=[^&]*)(&)?/i');
        let res = url.match(reg);
        if (res) {
    
    
            if (res[2] && res[2] === '?') {
    
     // before has ?
                if (res[3]) {
    
     // after has &
                    url2 = url.replace(reg, '?');
                } else {
    
    
                    url2 = url.replace(reg, '');
                }
            } else {
    
    
                url2 = url.replace(reg, '$3');
            }
        }
    } else {
    
    
        let reg = eval('/([\?|&]' + name + '=)[^&]*/i');
        if (url.match(reg)) {
    
     // edit
            url2 = url.replace(reg, '$1' + value);
        } else {
    
     // add
            let reg = /([?](\w+=?)?)[^&]*/i;
            let res = url.match(reg);
            url2 = url;
            if (res) {
    
    
                if (res[0] !== '?') {
    
    
                    url2 += '&';
                }
            } else {
    
    
                url2 += '?';
            }
            url2 += name + '=' + value;
        }
    }
    return url2;
}
 

应用示例:

参数存在示例:
//当前页面地址
index.php?m=p&a=index&classify_id=225&search=i
//执行修改
changeURLStatic('search', '99999');
//修改后页面地址
index.php?m=p&a=index&classify_id=225&search=99999




参数不存在示例: 
//当前页面地址
index.php
//执行修改
changeURLStatic('m', 'Index');
//修改后页面地址
index.php?m=Index
//执行修改
changeURLStatic('search', '99999');
//修改后页面地址
index.php?m=Index&search=99999
 

猜你喜欢

转载自blog.csdn.net/weixin_44797182/article/details/129360516
今日推荐