使用js修改url地址參數並修改url地址


注: 微信小程序和公眾號內屏蔽了  eval() 函數,需要用其他方法解決

修改瀏覽器地址參數:

function changeURLArg(url,arg,arg_val){
    var pattern=arg+'=([^&]*)';
    var replaceText=arg+'='+arg_val; 
    if(url.match(pattern)){
        var tmp='/('+ arg+'=)([^&]*)/gi';
        tmp=url.replace(eval(tmp),replaceText);
        return tmp;
    }else{ 
        if(url.match('[\?]')){ 
            return url+'&'+replaceText; 
        }else{ 
            return url+'?'+replaceText; 
        } 
    }
}

/**
 * 獲取url里的參數
 * @param arg 參數名
 * @returns
 */
function getURLString(arg) { 
    var reg = new RegExp("(^|&)" + arg + "=([^&]*)(&|$)", "i"); 
    var r = window.location.search.substr(1).match(reg); 
    if (r != null) 
        return unescape(r[2]);
    return null; 
} 

 

 

//調用結果如下: 
var url = window.location.href; 
changeURLArg(url, "id", 99); // http://www.csdn.com/?id=99&ttt=3 
changeURLArg(url, "haha", 33); // http://www.csdn.com/?id=99&ttt=3&haha=33

讀取URL中的參數、修改URL參數、動態修改URL replaceState js代碼

 

/*
*獲取URL參數
*/
function GetQueryString(name)
{
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
};

 

2、修改URL參數

//替換指定傳入參數的值,paramName為參數,replaceWith為新值
function replaceParamVal(paramName,replaceWith) {
    var oUrl = this.location.href.toString();
    var re=eval('/('+ paramName+'=)([^&]*)/gi');
    var nUrl = oUrl.replace(re,paramName+'='+replaceWith);
    this.location = nUrl;
window.location.href=nUrl
}

使用:

//http://www.aazj.cn/pc/meeting/card.html?skinColor=30&gid=-1&userId=566&modid=1133&puid=9

replaceParamVal("userId","333")

//http://www.aazj.cn/pc/meeting/card.html?skinColor=30&gid=-1&userId=333&modid=1133&puid=9

3、動態修改URL

var newUrl="新的Url";
var stateObject = 0;
var title="0"
history.replaceState(stateObject,title,newUrl);

javascript 刪除 url 中指定參數,並返回 url

實現代碼

// 刪除url中某個參數,並跳轉
function funcUrlDel(name){
    var loca = window.location;
    var baseUrl = loca.origin + loca.pathname + "?";
    var query = loca.search.substr(1);
    if (query.indexOf(name)>-1) {
        var obj = {}
        var arr = query.split("&");
        for (var i = 0; i < arr.length; i++) {
            arr[i] = arr[i].split("=");
            obj[arr[i][0]] = arr[i][1];
        };
        delete obj[name];
        var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g,"").replace(/\:/g,"=").replace(/\,/g,"&");
        return url
    };
}

 

 

 

//url: http//xx.com/list?page=1&a=5

執行代碼
funcUrlDel("page")

//http//xx.com/list?a=5

 

 

修改瀏覽器地址:

瀏覽器窗口有一個history對象,用來保存瀏覽歷史。

檢查瀏覽器是否支持 
if (window.history){ 
// 支持History API 
} else { 
// 不支持 
}

history對象提供了一系列方法,允許在瀏覽歷史之間移動。

其中包括 
history.back(); 回退
history.forward(); 前進
history.go(0)//刷新當前頁面;

HTML5為history對象添加了兩個新方法,history.pushState()和history.replaceState(),用來在瀏覽歷史中添加和修改記錄。

都會改變瀏覽器標簽欄中的URL值,區別在於pushState()會將之前的地址記錄在history對象中,通過back()可以返回前一頁,replaceState()則不能返回

 

 

 

 

轉:

https://blog.csdn.net/weixin_34240657/article/details/92264873

https://blog.csdn.net/WuLex/article/details/89194384

https://blog.csdn.net/WuLex/article/details/89204850

修改 瀏覽器 地址 https://blog.csdn.net/baiyan_er/article/details/80901553

https://www.cnblogs.com/lbcxq/p/11842713.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM