我担心它可能是 不可能,但是有没有办法改变 URL 而不在浏览器的历史中留下记录和 没有重新装弹的散列值?或者做同样的事情?
至于具体细节,我正在开发一些基本的散列导航,大致如下:
//hash nav -- works with js-tabs
var getHash = window.location.hash;
var hashPref = "tab-";
function useHash(newHash) {
//set js-tab according to hash
newHash = newHash.replace('#'+hashPref, '');
$("#tabs li a[href='"+ newHash +"']").click();
}
function setHash(newHash) {
//set hash according to js-tab
window.location.hash = hashPref + newHash;
//THIS IS WHERE I would like to REPLACE the location.hash
//without a history entry
}
// ... a lot of irrelavent tabs js and then....
//make tabs work
$("#tabs.js-tabs a").live("click", function() {
var showMe = $(this).attr("href");
$(showMe).show();
setHash(showMe);
return false;
});
//hash nav on ready .. if hash exists, execute
if ( getHash ){
useHash(getHash);
}
显然是使用 jQuery。其想法是,在这个特殊的情况下1)让用户返回每个标签的变化可以有效地“打破返回按钮”堆积不必要的引用,2)不保留哪个标签,他们是 正在播出,如果他们点击刷新是一种烦恼。