簡體   English   中英

控制asp.net中的后退按鈕URL

[英]Control back button url in asp.net

我希望能夠控制后退按鈕的歷史記錄。 如果頁面上有任何回發,則“后退”按鈕會在歷史記錄中對這些操作進行計數,但我要執行的操作只是返回上一頁。 有沒有一種方法可以做到這一點? 我確實查看了history.replaceState(),這行得通嗎? 我確實嘗試使用onhashchange事件來捕獲被單擊的后退按鈕,但在chrome中似乎完全忽略了它?

首先,您需要了解您是否正在按照HTML5標准進行編碼,因為歷史記錄對象只能在HTML5中進行操作。 由於您正在編碼ASP.NET因此知道要支持IE的舊版本是很重要的,而我的意思是版本9之前的版本。

再次取決於control ,因為您無法控制Web瀏覽器。 請記住,Web是一個開放平台,用戶可以導航到她想要的任何地方。 捕獲瀏覽器的“后退”按鈕不是一個簡單的解決方案,而是很棘手的。 瀏覽器的點擊事件過多,我的建議是開始在Web場景中思考而不是.NET應用程序(我本人來自.NET背景)。

我個人會視情況選擇使用pushStatereplaceState 它們是在所有瀏覽器中實現的方法,實現它們並非易事。 請參閱這篇關於MDN的驚人文章,《 操縱瀏覽器歷史》 您可以輕松地推送新狀態,創建新狀態並導航到用戶瀏覽器體驗中的特定點,並且這是HTML標准的一部分,因此您不會像下面的代碼那樣簡單地破解任何東西:

window.history.back(); // Go back in history
window.history.forward(); //Go forward in history

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");  //Push your new desired state in URL

var stateObj = { foo: "bar" };
history.replaceState(stateObj, "page 2", "bar.html"); // Will use the current object
//insteadof creating another one 

UPDATE :如果要強制導航到HTML,只需使用pushState或replaceState,如下所示:

var enforcedPageToVisit = "
var stateObj = { pageName: "test" };
history.pushState(stateObj, "Page to visit evertime when you click back", enforcedPageToVisit);

暫無
暫無

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

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