簡體   English   中英

在History.js中有沒有辦法知道何時按下后退按鈕

[英]Is there a way in History.js to know when the back button was pressed

我已經開始測試History.js了 在了解它是如何工作以及沒有popstate ,相反就是statechange 當按下瀏覽器的后退按鈕時,我正在尋找一種不同的方法。

原因是我需要知道狀態移動之前的URL,從我要去的那個。 根據項目包含的要點 ,只查看我們訪問的URL。

我希望解決方案不是跟蹤全局變量中訪問的最新URL。

謝謝

我發現github上的解決方案對我來說有點過頭了。 除了在使用History改變狀態之前,我創建了一個始終正確的bool。

var manualStateChange = true;

History.Adapter.bind(window,'statechange',function(){
    if(manualStateChange == true){
     // BACK BUTTON WAS PRESSED
    }
    manualStateChange = true;
});

每次我以編程方式更改狀態時,將bool設置為false:

manualStateChange = false;
History.pushState(null, null, currentPath);

我知道這是一個非常過時的問題,但是我在標准頁面和歷史狀態頁面之間切換時遇到了后退/前進按鈕問題的解決方案。

場景:在一組頁面上使用HTML5歷史記錄(或history.js插件)然后我們需要實際加載的其他頁面,也就是標准頁面(不要問為什么,但是在某些用例中可能需要這樣)

當您從歷史狀態頁面轉到並對標准頁面進行實際加載時。 你不能回去:它改變了網址,但沒有加載頁面 - 它只會觸發狀態轉換; 我假設是原帖的問題。 我個人認為這是一個瀏覽器錯誤(但所有瀏覽器都有問題),因為瀏覽器應該知道你所在的頁面是在歷史狀態頁面之外重新加載的。

我用一些非常簡單的東西修復了這個問題:收聽statechange事件並告訴瀏覽器在觸發時刷新。 這樣我就不在乎他們是否會退出或退出此頁面。 如果瀏覽器認為狀態正在改變(鏈接不會觸發statechange事件),則只有返回/轉發INTO歷史狀態頁面才會觸發此事件,因此它解決了該問題。

代碼,使用jQuery + History.js插件:

$(window).on('statechange', function() {
    window.location.reload();
});

如果這沒有意義,那么你可能沒有這個問題。 然而,我注意到這對那些使用HTML 5歷史上的許多網站(如果你的圖像模式時重新加載,然后嘗試回去,甚至pinterest.com有這個問題)。

希望如果你確實遇到這個問題,你會發現這個答案並且松了一口氣:)

在'官方'版本中,此功能不可用。 嘗試在main中使用此文件: https//github.com/danger89/history.js/blob/master/scripts/bundled/html5/jquery.history.js

我不能保證他的解決方案適用於每個瀏覽器。 但這是一個很好的解決方案。 如果您應用了他的更改,您可以使用:

var State = History.getState();
if (State.navigation) {
    // Back / forward button is pressed.
}

更多信息可以在Github第47期找到。

與詹姆斯瓦格納相似的答案。 'statechange'事件被雙向觸發,所以我只檢查'popstate'事件,在我的情況下只在用戶返回時調用。

window.addEventListener('popstate', function() {
  window.location.reload();
});

我終於使用History.pushState管理所有鏈接,這樣就不需要按下后退按鈕了。 我們以相同的方式處理所有狀態更改。

編輯:在History.js'Github中找到這兩個問題,可能對某人有幫助。 https://github.com/browserstate/history.js/issues/70 https://github.com/browserstate/history.js/issues/47

暫無
暫無

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

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