javascript страницу - Запросить подтверждение при закрытии вкладки



окна покинуть (4)

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

Как я могу это сделать?


Answers

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

Вот пример запуска:

window.onbeforeunload = function() {
    return "Hey, you're leaving the site. Bye!";
};

Это сообщение будет отображаться в виде диалога подтверждения. Это сообщение появится прямо перед тем, как клиент выгрузит страницу. Это может быть закрытие браузера, но это также может быть простым навигационным действием, например, щелчком по ссылке или отправкой формы на странице!

Скорее всего, вы также захотите отключить его (просто установите значение null ) всякий раз, когда нажимается внутренняя ссылка или отправляется внутренняя форма. Вы не хотите раздражать конечных людей неинтуитивным поведением. Вы можете это сделать, прослушивая событие click нужных ссылок и событие submit желаемых форм. jQuery может быть очень полезен здесь, поскольку он делает это с помощью crossbrowser-совместимого способа, так что вам не нужно писать> 20 строк кода JS для этого:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
    window.onbeforeunload = function() {
        return "You're leaving the site.";
    };
    $(document).ready(function() {
        $('a[rel!=ext]').click(function() { window.onbeforeunload = null; });
        $('form').submit(function() { window.onbeforeunload = null; });
    });
</script>

Вам нужно всего лишь предоставить всем внешним ссылкам атрибут deacto standard rel="ext" чтобы обозначить, что это внешние ссылки.

<a href="http://google.com" rel="ext">Google</a>

использовать событие onbeforeunload

window.onbeforeunload = function(){
    return "Are you sure you want to close the window?";
}

Это отобразит окно сообщений, в котором пользователь может выбрать, закрыть или закрыть окно.

Обратите внимание, что Opera не поддерживается Opera .


onbeforeunload огонь перед onunload .

Вы не можете отменить событие в onunload . onbeforeunload позволяет вернуть строку из событий (например, window.onbeforeunload = function() {return "really leave now?"} , и браузер задаст пользователю вопрос о том, хотят ли они покинуть вашу страницу. событие, если нажата кнопка «Да» (так должно быть на мой взгляд.)

Общие вопросы:

  • alert , confirm и confirm не допускаются ни в одном из событий.
  • В Opera также не поддерживается.

ПРЕДУПРЕЖДЕНИЕ. В IE6 / 7 по крайней мере (и, возможно, IE8, но не FF / Chrome и т. Д.) onbeforeunload и onunload запускаются при нажатии ссылок anchors / javascript. Некоторые примеры:

  • <a href="#myanchor">trigger unload!</a>
  • <a href="javascript: alert('message!')">trigger unload!</a>

(MSDN так же хорош, как и любой другой, учитывая, что он нестандартен и что Firefox / Chrome / Safari, похоже, в значительной степени скопировали реализацию из IE.)


Как просто изменить html на новые данные.

$('#mySelect').html('<option value="whatever">text</option>');

Другой пример:

$('#mySelect').html('
    <option value="1" selected>text1</option>
    <option value="2">text2</option>
    <option value="3" disabled>text3</option>
');




javascript browser