Javascript закрыть окно предупреждения - PullRequest
30 голосов
/ 21 января 2009

Я хочу иметь возможность автоматически закрывать окно оповещения с помощью javascript по истечении определенного периода времени или определенного события (например, onkeypress). По моим исследованиям, это не выглядит возможным с помощью встроенной функции alert (). Есть ли способ переопределить его и контролировать открываемое диалоговое окно?

Кроме того, я не хочу переопределения, которое показывает скрытый div в качестве предупреждения. Мне нужно фактическое диалоговое окно.

Ответы [ 10 ]

18 голосов
/ 21 января 2009

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

6 голосов
/ 17 июля 2017

Похоже, что вы можете сделать что-то похожее с Notification API. Вы не можете контролировать, как долго он виден (вероятно, предпочтение ОС какого-либо типа - если вы не укажете trueInteraction true), и он требует от пользователя нажать «разрешить уведомления» (к сожалению), но здесь это так:

Если вы хотите, чтобы он закрывался через 1 с:

var notification = new Notification("Hi there!", {body: "some text"});
setTimeout(function() {notification.close()}, 1000);

Если вы хотите показать его дольше, чем «по умолчанию», вы можете привязать к обратному вызову onclose и показать другое повторное уведомление, я полагаю, для его замены.

Ссылка: вдохновлен этим ответом, хотя этот ответ больше не работает в современном Chrome, но Notification API работает.

5 голосов
/ 21 января 2009

нет контроля над диалоговым окном, если у вас есть контроль над диалоговым окном, вы можете написать навязчивый код JavaScript. (Не рекомендуется использовать оповещение для чего-либо, кроме отладки)

3 голосов
/ 21 января 2009

Я хочу иметь возможность закрыть оповещение коробка автоматически с использованием JavaScript через определенное время или на конкретное событие (т.е. onkeypress)

Sidenote: если у вас есть Alert («данные»), вы не сможете поддерживать выполнение кода в фоновом режиме (AFAIK) .... диалоговое окно является модальным окном, поэтому вы также не можете потерять фокус. Таким образом, у вас не будет нажатия клавиш или таймера ...

2 голосов
/ 01 сентября 2017

Попробуйте плагин загрузочной коробки.

var alert = bootbox.alert('Massage')
alert.show();
setTimeout(function(){alert.modal('hide'); }, 4000);
1 голос
/ 21 января 2009

Единственная реальная альтернатива - использовать какой-то виджет с модальной опцией. Посмотрите на jQuery UI для примера диалога с этими функциями. Подобные вещи существуют практически во всех JS-фреймворках, о которых вы можете упомянуть.

1 голос
/ 21 января 2009

Полагаю, вы можете открыть всплывающее окно и вызвать , что , - диалоговое окно. Я не уверен в деталях, но я уверен, что вы можете программно закрыть окно, которое вы открыли из javascript. Будет ли этого достаточно?

0 голосов
/ 20 июля 2017
window.setTimeout('alert("Message goes here");window.close();', 5000);
0 голосов
/ 27 февраля 2012

Вы можете использовать метку и установить время ее появления, например Первоначально скрыть это и показать на клике. . $ ( '# Div_Message') FadeIn (500) .delay (1000) .fadeOut (1500);

0 голосов
/ 21 января 2009

Если вы сделаете это программно в JS, это будет похоже на изобретение колеса. Я рекомендую использовать плагин jQuery с именем jGrowl

...