我有一個HTML5應用程序,它操縱瀏覽器歷史記錄以顯示Ajax調用的正確URL。這很好,但是當我的應用程序超鏈接到外部網站時會出現問題,例如http://www.google.com。發生這種情況時,歷史是這樣的:HTML5歷史記錄,後退按鈕和外部鏈接
我的應用頁面A - >我的應用頁面乙 - >谷歌
當用戶點擊後退按鈕一次,一切都很好。顯示我的應用程序頁面B.
但是,當用戶第二次點擊後退按鈕時,URL會更改,但頁面不會更改。我的應用程序無法進行適當的Ajax調用來顯示My App Page A的狀態,因爲onpopstate處理程序從未被調用過。這是因爲當瀏覽器返回到我的應用程序頁面B時沒有初始化處理程序(在該事件中沒有事件觸發,所以我無法重新初始化處理程序。)
這種體驗與Chrome有關,但我沒有理由相信它是針對Chrome的。有沒有解決這個問題的方法?
我知道像Gmail這樣的應用程序會在新窗口中打開所有外部超鏈接。但是我的應用程序的要求不允許我這樣做。
除popstate處理程序外,還應該使用onload處理程序,並且[可能需要某個卸載處理程序](http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-後退按鈕)來中斷瀏覽器緩存。 – user123444555621
我不明白爲什麼'onpopstate'從來沒有被叫過。每次用戶更改位置時都應該調用它。 –