Adakah yang bisa memberikan contoh yang baik untuk history.replaceState? Inilah yang dikatakan w3.org :
history . replaceState(data, title [, url ] )
Memperbarui entri saat ini dalam riwayat sesi untuk memiliki data, judul, dan, jika disediakan dan bukan null, URL.
Memperbarui:
Ini bekerja dengan sempurna:
history.replaceState( {} , 'foo', '/foo' );
Url berubah, tetapi judul tidak berubah. Apakah itu bug atau saya melewatkan sesuatu? Diuji pada Chrome terbaru.
javascript
ajax
html
Serja
sumber
sumber
title
parameternya sebenarnya tidak digunakan.replaceState
contoh, dan jawaban yang diterima sama sekali bukanreplaceState
contoh.Jawaban:
Memang ini bug, meski disengaja selama 2 tahun sekarang. Masalahnya terletak pada beberapa spesifikasi yang tidak jelas dan kompleksitas ketika
document.title
dan mundur / maju terlibat.Lihat referensi bug di Webkit dan Mozilla . Juga Opera pada pengantar History API mengatakan itu tidak menggunakan parameter judul dan mungkin masih tidak.
Solusi potensial
Satu-satunya cara yang saya lihat adalah mengubah elemen judul dan menggunakan pushState sebagai gantinya:
sumber
replaceState()
dan cukup mengatur judul dokumen secara manualdocument.title = "title"
Ini adalah contoh minimal yang dibuat-buat.
Ada lagi yang harus
replaceState()
saya lakukan tetapi saya tidak tahu apa sebenarnya yang ingin Anda lakukan dengannya.sumber
title
Parameter direplaceState()
adalah, sepengetahuan saya, diabaikan di semua browser.history.pushState
mendorong status halaman saat ini ke tumpukan riwayat, dan mengubah URL di bilah alamat. Jadi, ketika Anda kembali, keadaan itu (objek yang Anda lewati) dikembalikan kepada Anda.Saat ini, hanya itu yang dilakukannya. Tindakan halaman lainnya, seperti menampilkan halaman baru atau mengubah judul halaman, harus dilakukan oleh Anda.
W3C spec yang Anda tautkan hanyalah konsep, dan browser dapat menerapkannya secara berbeda. Firefox , misalnya, mengabaikan
title
parameter sepenuhnya.Berikut adalah contoh sederhana
pushState
yang saya gunakan di situs web saya.sumber
replaceState
mengubah keadaan halaman saat ini. Ini memungkinkan Anda mengubah objek negara dan URL dari kondisi halaman saat ini .lihat contohnya
dan pencarian
location.hash
;sumber
Argumen kedua Judul tidak berarti Judul halaman - Ini lebih merupakan definisi / informasi untuk keadaan halaman itu
Tapi kita masih bisa mengubah judul menggunakan event onpopstate , dan meneruskan nama judul bukan dari argumen kedua, tetapi sebagai atribut dari parameter pertama yang dilewatkan sebagai objek
Referensi: http://spoiledmilk.com/blog/html5-changing-the-browser-url-without-refreshing-page/
sumber
Menurut dokumen MDN History
Ada jelas mengatakan bahwa argumen kedua untuk masa depan digunakan bukan untuk saat ini. Anda benar bahwa argumen kedua berhubungan dengan judul halaman web tetapi saat ini diabaikan oleh semua browser utama.
Firefox saat ini mengabaikan parameter ini, meskipun mungkin menggunakannya di masa depan. Melewati string kosong di sini harus aman terhadap perubahan metode di masa mendatang. Atau, Anda bisa memberikan judul pendek untuk status yang Anda pindahkan.
sumber
Saya benar-benar ingin menanggapi jawaban @ Sev.
Sev benar, ada bug di dalamnya
window.history.replaceState
sumber
Misalkan https://www.mozilla.org/foo.html menjalankan JavaScript berikut:
Ini akan menyebabkan bilah URL untuk menampilkan https://www.mozilla.org/bar2.html , tetapi tidak akan menyebabkan peramban memuat bar2.html atau bahkan memeriksa apakah bar2.html ada.
sumber