Saya khawatir ini mungkin tidak mungkin, tetapi adakah cara untuk mengubah nilai hash URL tanpa meninggalkan entri di riwayat browser dan tanpa memuat ulang ? Atau melakukan yang setara?
Sejauh spesifikasinya, saya sedang mengembangkan beberapa navigasi hash dasar di sepanjang baris:
//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);
}
Menggunakan jQuery, tentu saja. Idenya adalah bahwa dalam contoh khusus ini 1) membuat pengguna kembali ke setiap perubahan tab dapat secara efektif 'memecah tombol kembali' dengan menumpuk referensi yang tidak perlu, dan 2) tidak mempertahankan tab mana yang saat ini mereka aktifkan jika mereka menekan segarkan gangguan.