检测用户是否通过浏览器后退按钮到达当前页面

时间:2015-02-27 19:44:40

标签: javascript navigation cross-browser back-button

我有一个网站,如果用户导航到某个页面,那么他会根据页面上的某些条件获得对话通知。用户可以从此页面导航到其他页面,当然也可以按这些页面上的后退按钮导航回此页面。

我想检测用户是否通过后退按钮到达此页面,因此对话框通知不再显示(因为用户已经看过它)。

有没有办法可靠地检测到它?

4 个答案:

答案 0 :(得分:0)

最好的(虽然不是TREMENDOUSLY可靠)方式是使用Javascript历史记录对象。您可以查看history.previous页面,看看它是否是系列中的下一页。不是一个很好的解决方案,但也许是解决问题的唯一方法。

答案 1 :(得分:0)

MDN list of window events

您的最佳可能性可能是window.onpageshow = function(){};

  

窗口上的pageshow事件的事件处理程序属性。

window.onpageshow = function(event) {
    if (event.persisted) {
        alert("From back / forward cache.");
    }
};

答案 2 :(得分:0)

我喜欢在输入字段中使用一个值:-

<input type="hidden" id="fromHistory" value="" />

<script type="text/javascript">
if (document.getElementById('fromHistory').value == '') {
    document.getElementById('fromHistory').value = 'fromHistory');
    alert('Arrived here normally');
} else {
    console.log('Arrived here from history, e.g. back or forward button');
}
</script>

之所以可行,是因为如果浏览器从历史记录中导航回该字段,浏览器会用javascript放入的字段重新填充该字段的值:-)

答案 3 :(得分:0)

输入技巧不再起作用。这是我使用的解决方案:

if (window.performance && window.performance.navigation.type === window.performance.navigation.TYPE_BACK_FORWARD) {
    alert('Got here using the browser "Back" or "Forward" button.');
}