態你不喜歡活潑的標題嗎? 考慮一個複雜的應用程序,例如WebMail客戶端。從本質上講,這是一個在單個HTML頁面上運行的複雜JavaScript程序。用戶加載URL,並提供電子郵件列表。他們單擊標題,並使用Ajax檢索電子郵件內容並顯示。他們現在想返回電子郵件列表;他們做什麼? … …單擊瀏覽器的後面按鈕。 砰。該應用程序關閉並返回到訪問應用程序之前查看的頁面。或者,如果它是一個新的瀏覽器選項卡,則禁用了後按鈕,無法單擊。 所以我們有問題。我們的WebMail客戶端不支持大多數用戶了解的一個瀏覽器控制。有解決方案。有些涉及更改URL中的哈希標記(#name),以便保留狀態。它不是完美的,但是在所有瀏覽器中都可以使用。 幸運的是,問題已通過HTML5 History.pushstate解決了 和history.replacestate方法與窗口。 嘗試history.pushstate()演示頁面… 該技術簡單令人耳目一新:
// Ajax request ... // display result ... // modify history history.pushState(obj, title, url);obj是任何JavaScript對象。您可以使用它來保留狀態信息,例如{“ view”:“ emailcontent”,“ item”:123};
// Ajax request ... // display result ... // modify history history.pushState(obj, title, url);可以使用document.location(document.location.search and document.location.location.hash)確定URL位置 分別返回參數和哈希名稱)。 由PUSHSTATE()或替換為()設置的歷史態對像是從事件對象的狀態屬性中獲得的。您可以使用信息顯示適當的屏幕。 嘗試history.pushstate()演示頁面… 單擊“歷史記錄”按鈕幾次,然後返回以查看日誌中會發生什麼。 非常有用。您是否在Web應用程序中遇到了後退和下一個按鈕問題?
JavaScript歷史記錄如何工作?
JavaScript歷史記錄PUSHSTATE PUSHSTATE PUSHSTATE Works Works Works Works Works Works Works Works Works Works Works Works Works通過使用三個參數:狀態對象,標題(當前大多數瀏覽器忽略)和一個URL。調用PushState方法時,它將在瀏覽器的歷史記錄堆棧中創建一個新的歷史記錄。此新條目與指定的狀態對象和URL關聯。當用戶導航到此新條目時,POPSTATE事件將觸發,並且狀態對象將傳遞回應用程序。
>>
我可以更改URL而不使用JavaScript歷史記錄pushstate重新加載頁面?在單頁應用程序中,JavaScript歷史記錄PushState在維持用戶體驗中起著至關重要的作用。它允許您更改URL以反映應用程序的當前狀態而無需重新加載頁面。這意味著用戶可以使用瀏覽器的前後按鈕在不丟失應用程序狀態的情況下瀏覽應用程序。
>>使用JavaScript歷史記錄PushState有什麼局限性?它有一些局限性。例如,Internet Explorer 9和更早版本中不支持它。另外,它只能為相同的來源添加歷史記錄條目,這意味著您不能使用它來為不同域中添加歷史記錄條目。
以上是如何在復雜的HTML5和JavaScript應用程序中修改瀏覽器歷史記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!