2015-06-30 1 views
0

Я не хочу, чтобы пользователь нажал кнопку возврата на на моей странице.Событие с обратной связью JavaScript

Я хочу определить, нажал ли пользователь кнопку возврата на чужой странице и вернулся на мою страницу.

Мне нужно перезагрузить страницу, если это так.

+0

К сожалению, я не думаю, что есть такое событие, есть даже не отдельная событие для кнопки возврата на свою страницу. Я думаю, вам нужно будет хранить сеансы, а адреса пользователей перенаправляются, а затем в течение определенного периода времени проверяют, относится ли тот же самый пользователь к тому же домену и т. Д., Но это звучит довольно сложно. – adeneo

+0

Верхний ответ здесь http://stackoverflow.com/questions/829046/how-do-i-detect-if-a-user-has-got-to-a-page-using-the-back-button предлагает использовать скрытая форма, поскольку эти значения сохранены. – bbill

+1

Попробуйте событие 'unload': https://developer.mozilla.org/en-US/docs/Web/Events/unload. Также см. Подобный вопрос: http://stackoverflow.com/questions/1341089/using-meta-tags-to-turn-off-caching-in-all-browsers – Pluto

ответ

1

Вы можете играть с window.history и, возможно, сохранить некоторые значения для пользователя локально в localstorage или в cookie. (Для справки, MDN article)

Например, проверьте значение window.history.length, когда пользователь находится на вашей странице; затем перейдите в другое место; затем нажмите «назад», чтобы вернуться на предыдущую страницу. Теперь сравните window.history.length - это совсем другое (по крайней мере, для меня, в Chrome).

TL; DR - это не будет надежным методом, но это может быть достаточно хорошо для вас.

+0

Да, это хорошо. Я могу сравнить localStorage.historyLength с window.history.length. Работает на меня! –

+0

За исключением того, что они не работают, если они нажимают вперед и назад. –

+0

Да, это правда. Я не знаю, насколько это возможно ... но, учитывая другие возможные ответы (через ссылки, размещенные в комментариях к вашему OP), похоже, что для этого не существует абсолютно надежного метода. Вы можете комбинировать подходы. – arthurakay

0

Вот что я в итоге сделал. Это работает, но дайте мне знать, если у вас есть лучшее решение:

window.addEventListener('unload', unload) 
function unload() { 
    localStorage.setItem('reload',1) 
} 

var reload = localStorage.getItem('reload') 
reload = parseInt(reload,10) 
if (reload) { 
    localStorage.setItem('reload',0) // false doesn't work here. 
    window.removeEventListener('unload', unload) 
    window.location.reload() 
}