HTML5 geçmişi Spec ilginç.
history.pushState()popstatekendi 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 popstateolayı manuel olarak göndermeniz veya history.go()yeni duruma gitmek için kullanmanız gerekir. Fikir şu ki, bir yönlendirici popstateolayları 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 popstateolayları yapar.
history.go()ve history.go(0)tam sayfa yeniden yükleme yapın ve popstateetkinlik göndermeyin .
history.go(-1)(1 sayfa geri) ve history.go(1)(1 sayfa ileri) dağıtım popstateolayları 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 popstateyönlendirici ile olayları dinleyin .