Помогите отменить .onbeforeunload при переходе по внутренним ссылкам
Здравствуйте!
Помогите решить пожалуй банальную задачу, над которой бьюсь уже не один час из-за нехватки знания. Есть код:
<script>window.onbeforeunload=function(){$.removeCookie('visit');}</script>
Который чистит куки при закрытии страницы, однако он делает это и при переходе по внутренним ссылкам на сайта. После небольшого поиска, понял что наиболее распространенным решением этой проблемы является window.onbeforeunload=null;который можно повесить например на все ссылки <a> на сайте, но это как-раз таки у меня и не получается :( Подскажите пожалуйста как правильно все это оформить? Заранее спасибо. |
Цитата:
http://javascript.ru/tutorial/events/crossbrowser |
Цитата:
Вашу идею в браузере нельзя реализовать. Можно только сделать так, чтобы куки подыхали когда браузер закроют. Иначе при каждом переходе по ссылкам или просто обновлении страницы куки будут исправно стираться и толку с них тогда никакого. |
Цитата:
/* где-то было навешано */
window.addEventListener('onbeforeunload',callback);
/* вешаем генерально */
document.body.addEventListener('click',function(e){
if(e.target.nodeName=='A'){
window.removeEventListener('onbeforeunload',callback);
return location.href=e.target.href;
}
});
Или типа того. PS Может кто-нибудь из соискателей onbeforeunload объяснить за каким членом-корреспондентом надо стирать куки до закрытия страницы? Вообще эта фича служит обычной цели подсказать юзеру чего-нить там сохранить из несохраненного на странице или закрыть, или типа того, как это предусмотрено в нормальных десктоп программах. При чем тут вообще кукисы? |
Например
saving_tip=function(e){
for(var name in inputs)
if(inputs[name].dirty())
return (e||window.event).returnValue='\o/';
},
/* below */
if(opts.saving_tip)
W.addEventListener('beforeunload',saving_tip,false);
/*
это когда после аякса приходит команда пойти нах
и чтоб без вопросов пойти, то онбефореунлоад надо отменить сперва
*/
if(typeof data.Location!==U) {
W.removeEventListener('beforeunload',saving_tip,false);
return W.location.assign(data.Location);
}
Стандартная схема. А куки при чем тут? |
| Часовой пояс GMT +3, время: 01:46. |