Предотвращение диалогов перед загрузкой в ​​IE9 - PullRequest
1 голос
/ 03 апреля 2012

У меня проблема в IE9 с onbeforeunload - когда запускается приведенный ниже код, он несколько раз вызывает диалоговое окно с вопросом, хотите ли вы остаться или покинуть страницу.

Я изменил свой код для предотвращения работы по умолчанию на основе этой темы безрезультатно.

Любая помощь по этому вопросу будет высоко ценится.

Пример кода:

window.onbeforeunload = function(e) {
    e.preventDefault();
    e.returnValue = false;
    saveFormData();
    return null;
}

function saveFormData() {
    $.post("<?php echo site_url('resume/cleanup'); ?>", { resume_id: "<?php echo $this->session->userdata('resume_id'); ?>" } );
}

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

Вы не можете отправить запрос AJAX, когда страница выгружается, так как большинство браузеров блокируют ее. Вы должны попросить пользователя остаться на странице, если есть грязные данные. Это все, что вы должны сделать из вашего onbeforeunload обработчика

Попробуйте свой код без вызова $ .post, и он должен вести себя как положено

1 голос
/ 03 апреля 2012

Единственное, что вам разрешено делать в обработчике onbeforeunload, это отображать диалоговое окно.Вы, в частности, не получаете дополнительное время для выполнения задач, выполнение которых может занять некоторое время, например запуск HTTP-запросов - пользователь попросил покинуть ваш сайт;кроме того, что они вежливо спрашивают их, хотят ли они остаться, вы не можете заставить их остаться (даже когда вы убираете).

https://developer.mozilla.org/en/DOM/window.onbeforeunload

...