Обновить

Комментарии 58

Никогда не напрягался модальностью алертов, но, черт подери, классно сделано!
Супер, а для Internet Explorer 6 есть такой же?
В качестве UserJS — не встречал.

А просто JS (не UserJS) решений полно. На Хабре сообщения об ошибках выводятся похожим способом.
просто интересно, а зачем?
Хотя бы потому что 20% людей используют еще его.
ну так пускай используют, кто ж им не дает то.
и?
не думаю, что люди, которые знают, что такое скрипт и грисманки используют ие6
У модальных диалогов есть особенность прерывать поток исполнения — с таким решением такое поведение измениться.
НЛО прилетело и опубликовало эту надпись здесь
а вот представьте что будет с вашим браузером и таким User JS когда вы попадете (мб случайно) на сайты розыгрыши… аля «Вы сюда попали вам не уйти (жмакаем ок) — появляется сл сообщение такого рода»… а когда кнопки ок нету и это все будет оч быстро происходить? ваш браузер может не выдержать :)
В таких случаях диалог сделают не модальным
а автор скрипта и автор новости — один и тот же человек?

мне вот что интересно — ну почему нельзя сделать, чтобы алерт блокировал только один таб, а не весь браузер?
На то он и alert :)
ну собственно это из-за того, что браузере все табы работают в одном потоке. в Хроме, насколько я помню, такой проблемы уже не стоит. Но надо проверить
кстати похоже что автор новости и скрипта — один человек. у него в инфо на юзерскриптс написан сайт, совпадающий с ником на хабре
Да, один и то же :-)

А смысл блокировки?
не, отличное расширение — я себе уже поставил.
и согласен, что алерту блокировка бывает крайне редко нужна.
НЛО прилетело и опубликовало эту надпись здесь
Это наверное потому что AdBlock Plus
НЛО прилетело и опубликовало эту надпись здесь
сижу я, Хабру читаю, а тут «какой-то сайт с рефератами» в соседнем табе по таймауту мне алерт выдает!
алерт — он ведь к определенной странице относится, а не к моему браузеру.
если бы не AlertStopper, то даже случайная ошибка в собственном скрипте, во время дебагинга, заставила бы меня перезапускать все вкладки в браузера.
пс. Это был ответ к дереву выше на коммент ingeniarius'а:
На то он и alert :)
Зачем блокировать таб, если можно его не блокировать? Мой скрипт как раз не блокирует.
с помощью вашего скрипта я смог сделать себе пустую подпись на gmail =)
ваш алерт не всегда вілазит поверх всех окон :) сделайте ему z-index побольше :)
Это на каком сайте? z-index: 9999 хватит? :-)
вполне :)
Не разбираюсь в js.
При сохранении настроек в гуглопоиске вылеает алерт — его скрипт успешно заменяет.
А вот строчка <script>alert('Ky-Ky!');</script> все равно вызывает блокирующий диалог.
Забыл: Opera 10 final.
Firefox 3: +1
Починено! Но только для Оперы.

Важное примечание: скрипт должен называться nice-alert.js, без «user». Иначе Опера будет работать в режиме совсестимости с Gresemonkey и запускать скрипты позже.

Теперь на early-run.html все алерты в Опере должня быть nice.
Да, работает. Спасибо еще раз за скрипт.
потверждаю на Opera 10.10 beta
Есть проблема с ранним запуском. UserJS срабатывает слишком поздно.

Я починю это для Оперы. А вот для Файрфокса не получится, так как Greasemonkey начинает работать всегда после загрузки страницы.
Интересно, можно ли создать аналог Greasemonkey, который запускается до загрузки страницы?
Я планирую написать add-on для Firefox-а. Это заодно и решит проблему c перекрыванием стилей.
ну еще можно с таким скриптом заспамить алертами и вереница уползет далеко вниз за пределы страницы. может какую-нибудь опцию типа закрыть все?
Я пока не встречал сайтов, где такое происходит. Когда встречу, чего-нибудь придумаю.
ну это пресловутые сайты шутки ) а у вас на юзерскрипт я просто зажал enter на поле ввода и вылезло много-много )
а если в цикле случайно алерт закрадётся — браузер не упадёт?
Мне кажется, весьма спорная штука… Конечно, так в большинстве случаев удобнее, но вдруг там действительно важное сообщение, которое необходимо прочитать… а справа там «мертвая зона» для глаз, можно просто не заметить это сообщение… Кнопки ОК там нет, значит, сообщение пропадёт само через несколько секунд…

Решил себе всё же не ставить…
Плохо только, что стили документа к нему применяются…
На каких сайтах с этим проблемы?
Здесь например благополучно получим невидимый текст
agtp.romhack.net/project.php?id=cavestory
Исправил.
Это чтобы исправить, нужно все существующие стили c !important перечислять…
жаль в chrome не работает.
Да, почему-то не работает. Я пока не могу понять почему.
Для третьего хрома: var w = contentWindow || window.wrappedJSObject || window;
в четверке (dev build) не хочет.
Спасибо.

Вы знаете что именно нужно поменять в nice-alert.user.js, чтобы он заработал? Я прочитал всю дискуссию, и мне не стало ясно в чём проблема.

Если я добавляю alert(123) в конец самого скрипта, то он работает. Если вызываю alert со страницы, то нет.
Проблема в том что window в скрипте и на веб-странице разные. В дискуссии предлагали сделать так:

location.href=«javascript:(function(){ваш_код})()»

Только двойные кавычки из GM_addStyle уберите. Сжать код в одну строчку можно с помощью dean.edwards.name/packer/

После этого достаточно логичным представляется его конвертация в расширение.

manifest.json
{
«name»: «Nice alert»,
«version»: «0.73»,
«description»: «Not modal alert box »,
«content_scripts»: [
{
«matches»: [«http://*/*», «https://*/*», «file://*»],
«js»: [«nice_alert.user.js»]
}
]
}

Запускаем конвертацию: «c:\Documents and Settings\aRuzanow\Local Settings\Application Data\Google\Chrome\Application\chrome.exe» --pack-extension=c:\extensions\nice_alert

Результат: ruzanow.ru/extensions/nice_alert.crx
Спасибо за расширение! Оно работает.

location.href=«javascript:...» — это убожество. Разработчики Хрома странные люди. Они оставили доступ к window страницы, но сделали его неудобным для разработчиков. Security от этого лучше не стало.

Получается, что Хром 4 не имеет обратную совместимость с большинством UserJS. Это очень плохо.
Здорово! Спасибо. :)
Единственное, хорошо бы долбавить !important к css-свойствам, чтобы не перекрывались стилями страницы.
А можно ссылку пример? ^_^'
Заборзел, ага =)
Самая первая ссылка в посте.
А сделайте, пожалуйста, еще оперное расширение.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации