2014-02-17 96 views
0

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

回答

0

首先,您需要知道您是否正在編碼HTML5標準,因爲歷史記錄對象只能在HTML5中操作。既然你是編碼ASP.NET是valulale知道你要支持IE瀏覽器的舊版本和舊我的意思是之前的版本9

通過control再根據的,因爲你無法控制Web瀏覽器。請記住,Web是一個開放的平臺,用戶可以導航到任何她想要的地方。捕獲瀏覽器後退按鈕並不是一個簡單的解決方案,這是很不方便的。每個瀏覽器都有它們的點擊事件,我的建議是,開始在web場景中思考,而不是.NET應用程序(我自己是從.NET背景來的)。

我個人會根據情況去pushStatereplaceState。它們是在所有瀏覽器中實現的方法,實現它們不會很棘手。看到這個驚人的MDN帖子Manipulating the Browser History。您可以推送一個新的狀態,創建一個新的狀態並導航到用戶瀏覽器體驗中的某個點,非常容易,它是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); 
+0

想象一個典型的asp.net web表單應用程序和網頁有過幾次回傳。當點擊回到它以前的行動,我只是想能夠忽略這些並返回到上一頁,而不是上述幫助我做到這一點? – user1166905

+0

是的,的確如此!再次爲我的案子更新我的答案。 – ambodi

+0

我將上面的代碼添加到母版頁中,它沒有任何區別,不斷收到通常的確認頁面提交類型消息,而不是返回到上一頁。 – user1166905