Дилемма onbeforeunload: разрыв iframe и раздражающее сообщение при нажатии кнопок «Обновить» / «Назад» - PullRequest
1 голос
/ 10 марта 2010

Я внедряю службу поиска под названием SearchInsideOut . Эта служба поиска просто заменяет результаты веб-страниц на полные веб-страницы (да, я использовал iframe).

Проблема, с которой мне приходится сталкиваться, - это страницы с нарушением фрейма.
Многообещающее решение, которое я нашел, - это использование onbeforeunload, чтобы пользователи могли решать, оставаться или покинуть мой сайт.
Но это также создает другое раздражающее поведение. Когда пользователи нажимают другие ссылки на моем сайте, onbeforeunload также будет срабатывать.

К счастью, я мог решить эту проблему, поместив window.onbeforeunload=null в событие onclick этих ссылок моего сайта.
К сожалению, я не знаю, как обнаружить внешние события, такие как нажатие кнопок «Обновить / Назад».
Что я должен сделать, чтобы решить эту трудность?

Все предложения и комментарии высоко ценятся.

1 Ответ

0 голосов
/ 26 мая 2010

Взять в качестве примера этот сайт. Попробуйте обновить страницу после того, как вы ввели текст, отвечающий на сообщение. Вы увидите, что на странице будет предложено продолжить работу или выйти. Сделайте еще один тест, не отвечая на сообщение, просто обновите, вы увидите, что подтверждение не будет показано, потому что сайт делает тест, если «ответ» пуст или нет. Пример:

<html>
<head>
<script>
function closeIt()
{
  var mytext = document.getElementById("mytext").value;
  if(mytext != "")
     return "Any string value here forces a dialog box to \n" + 
         "appear before closing the window.";
}
window.onbeforeunload = closeIt;
</script>
</head>
<body>
  <textarea id="mytext"></textarea>
</body>
</html>

Так что вам решать, когда появится окно или нет. Посетите также Microsoft Msdn , чтобы понять, когда и как onbeforeunload работает

...