簡體   English   中英

我在歷史記錄列表中的什么位置?

[英]Where am I in the history list?

我的目標是在一頁應用程序中創建一個Javascript函數,該函數可以告訴我后退按鈕是否可以執行任何操作。

我以為window.history.length會幫助我:如果長度與應用程序啟動時的長度相同,那么您就處於“開始”的位置,並且該功能不應執行任何操作。

但不是。 想象一下,應用程序中只有一個內部鏈接#a 當您從新標簽頁啟動應用時,瀏覽器位於# ,長度為1,並且您知道后退按鈕不會執行任何操作。 如果單擊#a ,則轉到#a ,長度為2,並且您知道后退按鈕將起作用。

然后,可悲的是,如果您確實按了后退按鈕,則返回到# ,但是長度仍然為2,因為#a在“未來歷史”中。

幫幫我。 我如何知道后退按鈕當前是否處於“活動”狀態? 這真殺了我。

(由於歷史記錄中可能存在來自完全不同的站點的URL,因此問題有點復雜。對我來說,即使后退按鈕本身可以工作,也應將其視為“無效”)。

假設您的用戶從不手動修改網址,那么他們導航的唯一方式是

  • 在您的應用中按一個按鈕/鏈接,或者
  • 按下后退按鈕

因此,您可以使用自己的歷史記錄進行跟蹤。 每次單擊按鈕時,請存儲該按鈕所在的頁面以及該按鈕被單擊的位置(可能在本地存儲中)。 然后,當它再次加載時,您只需單擊按鈕/鏈接或后退即可測試是否已到達用戶所在的位置。 如果是回擊,請減少您的歷史記錄。 如果您沒有記錄的歷史記錄,則知道后退按鈕將不起作用或進入其他站點。

解決方案是將路線更改存儲在您的應用程序中,並保留自己的狀態歷史記錄。 這是由於以下原因:

出於安全原因,History對象不允許非特權代碼訪問會話歷史記錄中其他頁面的URL,但允許它導航會話歷史記錄。

為此,您需要使用$ locationChangeSuccess事件。 請參閱: 如何使用angular檢測瀏覽器的后退按鈕單擊事件? 用於檢測后退按鈕,如果不是后退按鈕,則只需將其附加到要跟蹤的數組即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM