HTML5 geçmişi Spec ilginç.
history.pushState()
popstate
kendi başına bir etkinlik göndermez veya yeni bir sayfa yüklemez. Sadece devleti tarihe itmek içindi. Bu, tek sayfa uygulamaları için bir "geri al" özelliğidir. Bir popstate
olayı manuel olarak göndermeniz veya history.go()
yeni duruma gitmek için kullanmanız gerekir. Fikir şu ki, bir yönlendirici popstate
olayları dinleyebilir ve sizin için navigasyonu yapabilir.
Dikkat edilmesi gereken bazı noktalar:
history.pushState()
ve olayları history.replaceState()
göndermeyin popstate
.
history.back()
,, history.forward()
ve tarayıcının geri ve ileri düğmeleri gönderme popstate
olayları yapar.
history.go()
ve history.go(0)
tam sayfa yeniden yükleme yapın ve popstate
etkinlik göndermeyin .
history.go(-1)
(1 sayfa geri) ve history.go(1)
(1 sayfa ileri) dağıtım popstate
olayları yapar.
Yeni bir durumu zorlamak ve bir popstate olayı göndermek için geçmiş API'sını böyle kullanabilirsiniz.
history.pushState({message:'New State!'}, 'New Title', '/link');
window.dispatchEvent(new PopStateEvent('popstate', {
bubbles: false,
cancelable: false,
state: history.state
}));
Ardından popstate
yönlendirici ile olayları dinleyin .