一、js修改地址欄URL參數
function changeURLPar(destiny, par, par_value) { var pattern = par + '=([^&]*)'; var replaceText = par + '=' + par_value; if (destiny.match(pattern)) { var tmp = '/\\' + par + '=[^&]*/'; tmp = destiny.replace(eval(tmp), replaceText); return (tmp); } else { if (destiny.match('[\?]')) { return destiny + '&' + replaceText; } else { return destiny + '?' + replaceText; } } return destiny + '\n' + par + '\n' + par_value; }
destiny是目標字符串,比如是http://www.huistd.com/?id=3&ttt=3
par是參數名,par_value是參數要更改的值,調用結果如下:
changeURLPar(test, 'id', 99); // http://www.huistd.com/?id=99&ttt=3
changeURLPar(test, 'haha', 33); // http://www.huistd.com/?id=99&ttt=3&haha=33
二、無刷新更換頁面url
var url = document.URL, //獲取當前頁面的網址信息 URL; var num = url.indexOf('#'); //獲取#在的位置信息 if (num){ URL = url.substring(0,num); //截取網址信息 history.pushState(null,null,URL); //將網址設置 }
方法:window.history.pushState(state, title, url)
state
:一個與添加的記錄相關聯的狀態對象,主要用於popstate
事件。該事件觸發時,該對象會傳入回調函數。也就是說,瀏覽器會將這個對象序列化以后保留在本地,重新載入這個頁面的時候,可以拿到這個對象。如果不需要這個對象,此處可以填null
。title
:新頁面的標題。但是,現在所有瀏覽器都忽視這個參數,所以這里可以填空字符串。url
:新的網址,必須與當前頁面處在同一個域。瀏覽器的地址欄將顯示這個網址。