簡體   English   中英

檢測URL更改是否返回

[英]Detect if URL change was back

我有一個網絡應用程序,在導航時會使用一些微妙的效果。 本質上是頁面從右側“滑入”。

應用程序中的所有內容都是基於對哈希的更改,並且一切正常。

我只是在尋找一種確定URL更改是否為“后退”操作的方法。 我不會嘗試影響更改-我的應用程序已經可以完美地處理該更改。 我只想扭轉“影響”。 換句話說,如果我知道他們單擊“后退”,我想從左向左滑動,而不是從右向右滑動。

請記住,我不需要動畫本身的幫助,也不需要跟蹤哈希中的應用程序狀態-我只需要知道如何知道更改是否為“后退”操作。

另外,我真的不想在應用程序中保留哈希狀態列表,因為用戶單擊來嘗試確定他們是否要“返回”。 我可能會認為,如果它確實是唯一的選擇,但我希望找到一個解決方案,該解決方案僅知道用戶是否已發起返回(“返回”按鈕,history.go(-1),右鍵單擊“返回”,等等)。

在沒有明確跟蹤哈希值更改的情況下,是否可以在javascript中獲得此信息?

使用上一頁變量。 我將假設當您“更改”頁面時,您是通過中央功能來完成此操作的。

在轉到頁面功能中

// Try to get the previous page if known (will be 'unidentified' if unknown)
var prevPage = window.previousPage;

// Set this page as the previous before moving.
window.previousPage = 'this page';

// Assume that gotoPage is where we are headed
if(gotoPage == prevPage)
{
    // We're going back!
}
else
{
    // We're going forward!
}

聚苯乙烯

我使用window.previousPage作為常規容器,並使用prevPage在范圍內進行比較。 這是設計使然,以限制必須設置window.previousPage的位置數。

編輯:

沒考慮過多次回溯,使用數組的想法相同(未經測試,但這是一般想法)

var prevPage = '';

if( Object.prototype.toString.call( window.previousPage ) === '[object Array]' )
    prevPage = window.previousPage[ window.previousPage.length - 1 ];

if(prevPage == gotoPage)
{
    // Splice out the last entry
    window.previousPage.splice( window.previousPage.length - 1, 1);
    // Going back DO NOT add new window.previousPage
}
else
{
    // Going forward add the previousPage before changing
    window.previousPage[ window.previousPage.length ] = 'this page';

    // Move Page
}

暫無
暫無

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

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