2016-03-21 2 views
0

У меня есть onberforeunload метод, который правильно предупреждая пользователя, когда они пытаются закрыть вкладку или браузер, используя происходит некорректно код:выход Page гиперссылкой не поймают по onberforeunload

window.onbeforeunload = function(event) { 

       event.returnValue = 'Are you sure you want to leave/'; 
       console.log(event.returnValue); 

    }; 

Я обнаружил, что onberforeunload не вызывается, когда я нажимаю гиперссылку на странице. Предупреждающее сообщение, которое я хочу отобразить, не отображается, и страница загружается свободно.

Я искал множество способов создания всплывающего окна, когда была выбрана гиперссылка, но все они имеют дело с одной или группами гиперссылок в тегах div. Я хочу, чтобы всплывающее окно отображалось, если выбрана какая-либо гиперссылка.

Почему не onbeforeunload улавливать выход страницы через гиперссылку? Является ли мое понимание onbeforeunload неправильным, что он должен ловить гиперссылки?

UPDATE

Я обновил код на следующее:

window.onbeforeunload = closeIT; 
function closeIT() { 
     return 'here'; 
     if(searchOnGoing){ 
      return 'Ifs you leave the Youtube History page now the application will not finish'; 
     } 

}; 

Он до сих пор не работает для гиперссылок и работы для браузера и закрытия вкладки. Я запускаю это как часть скрипта содержимого в chrome-расширении, которое вставляет скрипт контента на страницу. Это повлияет на это?

У меня также есть onunload следующее, мне интересно, это также повлияет на него?

window.onunload = function(event){ 
      //Do something 
    } 
+0

Он должен работать для гиперссылок, а также (см [этот пример] (http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm)). Я думаю, вам просто нужно изменить свой 'event.returnValue ...' на традиционный оператор 'return' (и переместить его после журнала). – Quantastical

ответ

0

Следующий фрагмент правильно использует onbeforeunload.

<body onbeforeunload="return myFunction()"> 
 
    
 
    <a href="google.com">Click me!</a> 
 
      
 
    <script> 
 
    function myFunction() { 
 
     return "Please don't go!\nThis works beautifully!"; 
 
    } 
 
    </script>

1

На самом деле, это должно вызвать. Вы каким-то образом поймаете событие через клик-событие-слушатель? В любом случае, вы можете показать предупреждение с помощью прослушивателя событий щелчка. Следующий код-фрагмент копируется из аналогичного вопроса: how to detect if a link was clicked when window.onbeforeunload is triggered? Здесь вопрос был, напротив, как предотвратить событие beforeunload при щелчке по ссылкам.

var link_was_clicked = false; 
document.addEventListener("click", function(e) { 
    if (e.target.nodeName.toLowerCase() === 'a') { 
    link_was_clicked = true; 
    } 
}, true); 

window.onbeforeunload = function() { 
    if(link_was_clicked) { 
    link_was_clicked = false; 
    return; 
    } 
    //other code here 
} 
Смежные вопросы