Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: альтернатива функции alert()
 
 автор: TanTaL91   (19.03.2009 в 15:15)   письмо автору
 
 

Подскажите пожалуйста альтернативу функцыи alert()

Какие еще есть виды вывода сообщения?

  Ответить  
 
 автор: PAT   (19.03.2009 в 15:23)   письмо автору
 
   для: TanTaL91   (19.03.2009 в 15:15)
 

Кроме alert'a имеются ещё два системных окна сообщения (Message Box) - confirm и prompt
Именно три этих Message Box отличаются от прочих не только тем, что они - системные встроенные (а все прочие - самодельные), но и тем, что при их выводе исполнение кода приостанавливается до того момента, покуда юзер не закроет этот Message Box.

Подробнее смотрите http://www.google.com/search?q=javascript+confirm+box и http://www.google.com/search?q=javascript+prompt+box (любые из 248 000 ссылок в каждом случае)

  Ответить  
 
 автор: amigo63   (20.03.2009 в 10:32)   письмо автору
 
   для: PAT   (19.03.2009 в 15:23)
 

А рельно создать свой confirm (то есть, после действия всплывает div, который до этого был display:none; в нем - кнопки, пока не нажмут, все дальнейшие действия заблокированы)?
Я думал о полном аналоге функции, но не знаю, как реализовать ожидание нажатия на кнопки, чтобы функция работала таким образом: if(myConfirm('Стой, кто идет! Знаешь пароль?')){...действие...}

  Ответить  
 
 автор: PAT   (20.03.2009 в 12:06)   письмо автору
 
   для: amigo63   (20.03.2009 в 10:32)
 

Без проблем.
По какому-то событию делаете свое окно видимым и на этом скрипт обрываете.
На какие-либо действия юзера в окне (например, клик по какой-то кнопке) повесить функцию-обработчик. Соответственно, до тех пор, покуда юзер не нажмёт на что-либо в окне, ОСНОВНОЙ скрипт остановится.
Так получится аналог конфирму или алерту (или промпт).

Разумеется, для полного соответствия по функциональности необходима ещё одна инструкция, коя ограничит воздействие юзера на прочий контент страницы при открытом окне сообщений. Например, надо будет между страницей и окном ("между"с точки зрения z-index) "подсунуть" какой-то контейнер на всю ширину и высоту с бакгроундом и полной прозрачностью.

  Ответить  
 
 автор: amigo63   (20.03.2009 в 18:50)   письмо автору
 
   для: PAT   (20.03.2009 в 12:06)
 

А поподробнее вот с этого места
...и на этом скрипт обрываете.
и до этого
...покуда юзер не нажмёт на что-либо в окне, ОСНОВНОЙ скрипт остановится.

Как осуществить такую приостановку?

  Ответить  
 
 автор: PAT   (21.03.2009 в 10:36)   письмо автору
 
   для: amigo63   (20.03.2009 в 18:50)
 

Например, так:
1. Имеем в коде прописанный
<div id="MesBox" style="z-index:999; position: absolute; top: 100px; left: 100px; display: none; width: 200px; height: 200px; background: silver"><a href="#" onclick="return f ()">Закрыть</a></div>


Контейнер с id="MesBox", как видите, изначально НЕВИДИМ, и, соответственно,
НЕТ ДОСТУПА к ссылке, клик по которой запускает функцию f ().

2. По какому-либо событию делаем этот контейнер ВИДИМЫМ, например, по окончании
загрузки тела документа:
<body onload="document.getElementById ('MesBox').style.display = 'block'">


Фактически исполнение скриптов после onload тега <BODY> прекратится и
возобновится оно только после вызова функции f ().


Таким образом достигается похожая на alert функциональность - покуда юзер не кликнет -
ничего происходить не будет.

Разумеется, в системном alert'e никаких (подобных указанной) функций не надо.
Но с этого я и начал - alert тем и отличается, что остановка скриптов при его использовании
происходит автоматически.


Понятно, что юзер может внешними кнопками браузера, например, закрыть окно (или нажать
кнопку "назад"). Но... как говорится - "копия всегда хуже оригинала":-)

  Ответить  
 
 автор: amigo63   (21.03.2009 в 10:57)   письмо автору
 
   для: PAT   (21.03.2009 в 10:36)
 

То есть, остановить скрипт может только onload?
А как же вот с этим:
<a onclick="if(myConfirm('Удалить файл?')){...действие...}">Удалить</a>
?
Нереализуемо?

  Ответить  
 
 автор: PAT   (21.03.2009 в 19:58)   письмо автору
 
   для: amigo63   (21.03.2009 в 10:57)
 

Мда... нелегко общаться с теми, кто читает написанное через слово...

Цитирую себя любимого, выделив жирно ключевые слова:
"По какому-либо событию делаем этот контейнер ВИДИМЫМ,
например, по окончании загрузки тела документа"

Цитирую ещё раз, сделав выделение ключевых слов Б_О_Л_Е_Е__ З_А_М_Е_Т_Н_Ы_М:
"П_О__К_А_К_О_М_У_-_Л_И_Б_О__С_О_Б_Ы_Т_И_Ю делаем этот контейнер ВИДИМЫМ,
Н_А_П_Р_И_М_Е_Р, по окончании загрузки тела документа"


Я привёл ПРИМЕР с onload, но я нигде не писал, что мой пример - это единственно возможный способ.

  Ответить  
 
 автор: sl1p   (21.03.2009 в 00:02)   письмо автору
 
   для: PAT   (20.03.2009 в 12:06)
 

а что мешает нажать "назад"?:)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования