Javascript onbeforeunload закрыть окно браузера

#javascript #jsp

#javascript #jsp

Вопрос:

На данный момент у меня есть этот крошечный скрипт, который проверяет, внесены ли какие-либо изменения в форму. Если есть изменения, то я устанавливаю флаг на ‘Y’. Я вызываю эту функцию в onBeforeunload=»changeConfirm()» местах в теге body. Я знаю, что не могу помешать пользователю закрыть окно, но как мне заставить этот сценарий работать, когда он внес изменения -> решил закрыть окно -> Скрипт предупредил его -> Пользователь нажимает отмена (теперь мне нужно вернуть его на экран вместо закрытия браузера.

 <script type="text/javascript">
var Flag= "";

function changeConfirm(){
if(Flag == 'Y')
 {
  var confirmStatus = confirm('Changes made. Dont want to save?');
 }
 else {
  alert("No changes were made "   Flag);
 }
}
 </script>
  

Комментарии:

1. Когда я пытаюсь это сделать, кнопкаотправки запрашивает пользователя «Внесены изменения …» Как вы обходите это поведение?

Ответ №1:

Попробуйте это :

  function confirmChanges() {
  if(Flag == 'Y')
   {
    if(confirm('Changes made. Dont want to save?')){
      return false;
    }else{
      return true;
    }
   }
   else {
    alert("No changes were made "   Flag);
   }
}
  

Комментарии:

1. Привет, никсвп.. Спасибо за решение. один вопрос.. должен ли я поместить эту функцию в тело сейчас?

2. @t0mcat — да, вы можете, но вы должны поместить окружающий script тег и лучше в head .

3. @t0mcat — поместите функцию в head и выполните вызов функции onbeforeunload события вашего body

4. Извините, что получилось. Спасибо 🙂 Собираюсь опубликовать новый вопрос с изменениями 🙂

Ответ №2:

Это должно быть так:

     window.onbeforeunload = function() {
        if ( Flag == 'Y' ) {
            return "Changes made. Don't want to save?";                         
        }
    }
  

Комментарии:

1. Привет, Джед, как мне вызвать эту функцию? Из тега body? или просто сохраните его внутри тега <script> на странице и не нужно вызывать из тела

2. Да, просто продолжайте <script> .

3. Когда я пытаюсь это сделать, кнопкаотправки запрашивает пользователя «Внесены изменения …» Как вы обходите это поведение?