2015-05-18 55 views
2

對不起,如果重複,但我不明白如何在我的情況下使用基本方法。 當用戶按下瀏覽器中的按鈕時,我需要隱藏一些div。這就是我所需要的。該頁面不得重新加載。我試過這種方式:如何防止默認並覆蓋瀏覽器的後退按鈕行爲?

window.onpopstate = function (event) { 
    event.preventDefault(); 
    alert("Back button pressed"); 
    myDiv.style.display = 'none'; 
} 

但這根本不起作用。即使警報不會觸發。瀏覽器一如既往地迴歸。

如何使它工作?首先,這必須在移動瀏覽器中有效。 window.location.hash的使用是否會觸發頁面重新加載?

回答

1

否,更換位置散列不會做一個頁面重新加載(這是所有單頁的應用程序是基於。

防止行爲單擊後退按鈕後(這將觸發頁面重載)是。不是一個真正的選擇,你可以做的最好的是向用戶發出警告:

window.onbeforeunload = function() { 
    return 'Sure you want to leave?'; 
}; 
+0

所以,我怎麼能隱藏myDiv當用戶試圖回去嗎?它可以在智能手機上使用嗎? – splash27

+0

你可以在onbeforeunload函數中隱藏它,但我真的沒有看到它的任何用處。是的......它將用於智能手機。 –

4

簡短的回答:你不能改變它

龍答:

您應該首先設置State然後使用事件處理程序獲取它。

因此,簡單地說,當用戶點擊文檔的特定部分,例如<a>時,您設置State,然後當他點擊(瀏覽器)後退按鈕時您已觸發事件。

someElement.addEventListener('click', function(e) { 

    history.pushState({ state: 'someElement was clicked' }, 'title', 'some-element.html'); 

}) 

現在,當後退按鈕被按下時,您將收到警報(如您的問題中所示)。

對於furthur信息檢查這裏:Manipulating the browser history(mdn)

+0

請注意,在<10或更舊的Android瀏覽器(<4.2)中不支持pushState(<4.2) –

+0

@BasSlagter你是對的,但我們在問題中看到'window.onpopstate',意味着他知道它是什麼。謝謝btw;) – mrReiha

相關問題