Как захватить событие закрытия окна браузера?

Чтобы получить char из Scanner, вы можете использовать метод findInLine.

    Scanner sc = new Scanner("abc");
    char ch = sc.findInLine(".").charAt(0);
    System.out.println(ch); // prints "a"
    System.out.println(sc.next()); // prints "bc"

Если вам нужна группа char из Scanner, тогда может быть удобнее (возможно, временно) изменить разделитель на пустую строку. Это заставит next() возвращать строку длины-1 каждый раз.

    Scanner sc = new Scanner("abc");
    sc.useDelimiter("");
    while (sc.hasNext()) {
        System.out.println(sc.next());
    } // prints "a", "b", "c"
141
задан kenorb 2 March 2015 в 11:15
поделиться

4 ответа

Событие beforeunload запускается всякий раз, когда пользователь покидает вашу страницу по любой причине.

Например, он будет активирован, если пользователь отправит форму, щелкнет ссылку, закроет окно (или вкладку) или перейдет на новую страницу с помощью адресной строки, окна поиска или закладки.

Вы можете исключить отправку формы и гиперссылки (кроме других фреймов) со следующим кодом:

var inFormOrLink;
$('a').on('click', function() { inFormOrLink = true; });
$('form').on('submit', function() { inFormOrLink = true; });

$(window).on("beforeunload", function() { 
    return inFormOrLink ? "Do you really want to close?" : null; 
})

Для версий jQuery старше 1.7 попробуйте следующее:

var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind("beforeunload", function() { 
    return inFormOrLink ? "Do you really want to close?" : null; 
})

Метод live не работает с событием submit , поэтому, если вы добавите новую форму, вы: Вам также необходимо привязать к нему обработчик.

Обратите внимание, что если другой обработчик событий отменяет отправку или навигацию, вы потеряете запрос подтверждения, если окно фактически закроется позже. Вы можете исправить это, записав время в событиях submit и click и проверив, происходит ли beforeunload более чем на пару секунд позже.

Обратите внимание, что если другой обработчик событий отменит отправку или навигацию, вы потеряете запрос подтверждения, если окно действительно закроется позже. Вы можете исправить это, записав время в событиях submit и click и проверив, происходит ли beforeunload более чем на пару секунд позже.

Обратите внимание, что если другой обработчик событий отменит отправку или навигацию, вы потеряете запрос подтверждения, если окно действительно закроется позже. Вы можете исправить это, записав время в событиях submit и click и проверив, происходит ли beforeunload более чем на пару секунд позже.

201
ответ дан 23 November 2019 в 23:04
поделиться

Может быть, просто отвяжите обработчик события beforeunload в обработчике события формы submit :

jQuery('form').submit(function() {
    jQuery(window).unbind("beforeunload");
    ...
});
44
ответ дан 23 November 2019 в 23:04
поделиться

Если при отправке формы они перенаправляются на другую страницу (как я предполагаю, отсюда срабатывает beforeunload ), вы можете попробовать изменить отправку формы на ajax вызов. Таким образом, они не покинут вашу страницу при отправке формы, и вы можете использовать свой код привязки перед загрузкой по своему усмотрению.

0
ответ дан 23 November 2019 в 23:04
поделиться

Возможно, вы могли бы обработать OnSubmit и установить флаг, который позже вы проверите в обработчике OnBeforeUnload.

1
ответ дан 23 November 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: