Tôi e rằng điều đó là không thể nhưng có cách nào để thay đổi giá trị băm của URL mà không để lại mục nhập trong lịch sử của trình duyệt và không cần tải lại không? Hoặc làm tương đương?
Về phần chi tiết cụ thể, tôi đang phát triển một số điều hướng băm cơ bản dọc theo các dòng:
//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);
}
Rõ ràng là sử dụng jQuery. Ý tưởng là trong trường hợp cụ thể này 1) khiến người dùng quay lại mọi thay đổi tab có thể 'phá vỡ nút quay lại' một cách hiệu quả bằng cách chất đống các tham chiếu không cần thiết và 2) không giữ lại tab nào họ hiện đang ở nếu họ nhấn làm mới một sự khó chịu.