2013-03-25 3 views
2

на моей странице, у меня есть слушатель на window.onpopstateв html, window.onpopstate срабатывает как при загрузке, так и на обратной стрелке - как узнать?

Я желаю поймать стрелка назад пользователя и запустить свои собственные рутинные

но window.onpopstate пожары, когда 1) страница первоначально загружается, 2) перезагружается, а также когда 3) пользователь нажимает стрелку назад

I может создать флаг космического пространства и проверить его. но более естественным было бы определить из самого события то, что происходит.

Есть ли какой-либо внутренний способ определить, было ли событие запущено с кнопки загрузки или возврата? когда я проверяю два события, они выглядят почти одинаково.

ответ

1

Событие window.onpopstate инициируется, когда пользователь перемещается между двумя записями истории для того же документа, то есть каждый раз, когда изменяется запись активной истории.

Он запускается при нажатии кнопки «Назад», при загрузке страницы, а также при перезагрузке страницы (Firefox не выдает это событие при загрузке страницы). Таким образом, поведение, которое вы видите, предназначено.

И, для кнопки «Назад», я думаю, что нет никакого способа обнаружить щелчок кнопкой мыши с помощью этого события.

+0

У вас есть идеи по поводу того, как я могу получить контекст: загрузить, перезагрузить или вернуться? –

0

Вы можете компенсировать ошибки popstate в браузерах. Когда кто-то использует мой редактор и иногда нажимает кнопку Backspace, которая запускает навигацию (это не должно быть значение по умолчанию, но не все имеют право на их позицию), поэтому я отменяю его (да, вы можете), а затем фиксируйте адресную строку с помощью history.go(1);. Я не размещаю код зависимостей здесь, так как различные люди будут нуждаться в этом для разных контекстов, но они составляют основу того, что вам нужно.

window.onpopstate = function(e) 
{ 
if (id_('editor') && is_node_parent(document.activeElement,id_('editor'))) 
{ 
    e.preventDefault(); 
    history.go(1); 
} 
}