2015-04-22 2 views
1

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

Я хочу, чтобы это диалоговое окно (изображение в комплекте) не появлялось при выходе из страницы. Предупреждение происходит каждый раз, когда я что-то меняю в форме на этой странице, но форма сохраняется асинхронно, поэтому никакие изменения на самом деле не «грязные», так сказать.

Confirm Navigation dialog box

Я попробовал пару вещей, найденных на StackOverflow и другие сайты, такие как:

window.onbeforeunload = null; 

window.onbeforeunload = function(e) { 
    e.returnValue = ''; 
    return false; 
} 

window.onbeforeunload = function(e) { 
    history.go(0); 
} 

Некоторые советы о том, как удалить это было бы весьма признателен.

Редактировать: В соответствии с запросом, приведен пример кода, который я пытаюсь. Внутри файла есть другой код, но не имеет никакого отношения к нему.

;(function($) { 
    // doc ready 
    $(function(){ 
     // Remove the alert 
     window.onbeforeunload = null; 
    }); 
})(jQuery); 
+0

Какой у вас фактический код? –

+0

У меня есть document.ready слушатель, окружающий мои задачи 'window.onbeforeunload'. Это единственные движущиеся части в этом вопросе. Я добавлю его к вопросу, если вы считаете, что это необходимо. –

ответ

0

Я создал рабочее решение для этого.

Как уже упоминалось, моя форма сохраняется асинхронно, поэтому предупреждение «Вы можете потерять изменения» не всегда точны.

Теперь у всех кликов ссылки больше нет диалогового окна. Однако это не проверяет закрытие вкладки/браузера.

;(function($){ 
    var dontSubmit = false, 
     $form = $('form#my-form'); 

    // Prevent the trigger a false submission on link click 
    window.addEventListener("beforeunload", function (e) { 
     dontSubmit = true; 
     $form.trigger('submit'); 
    }); 

    $form.on('submit', function(event){ 
     if (dontSubmit) { 
      event.preventDefault(); 
      return; 
     } 

     // Continue on as normal 
    }); 
})(jQuery);