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

HTML+CSS+JavaScript

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

 

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

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

тема: Запретить запуск скриптов при их повторной вставке.
 
 автор: Гость   (01.11.2011 в 11:51)   письмо автору
 
 

При вставке двух одинаковых скриптов (через <script type="text/javascript" src="... ) они срабатывают оба в дублируют требуемые действия. Нужно разрешить сделать свое дело только первому, а второму - завершить свою работу. Как это лучше сделать? С ходу придумал варианты:
1.1) При инициализации скрипта указывать какую-нибудь переменную, и потом ее проверять - если есть, значит отбой.
1.2) То же самое что и в 1.1, но вместо переменной использовать какой-нибудь элемент, на странице.
2) Пробегать по списку подключенных скриптов и проверять есть ли дубли (не сработает, т.к. как не узнать - запустился первый экземпляр скрипта или второй)

Есть еще какие-нибудь варианты? Самый нормальный способ на мой взгляд получается 1.1, но вдруг есть другие альтернативы или уже готовые решения, пока я не начал собирать велосипед).

  Ответить  
 
 автор: АЯС   (01.11.2011 в 12:18)   письмо автору
 
   для: Гость   (01.11.2011 в 11:51)
 

"Самым нормальным способом" будет не вставлять двух одинаковых скриптов.
Это и есть "готовое решение".
И не надо "начинать собирать велосипед".

  Ответить  
 
 автор: Гость   (01.11.2011 в 12:42)   письмо автору
 
   для: АЯС   (01.11.2011 в 12:18)
 

Спасибо за конструктивный совет. А по самому вопросу есть какие-нибудь идеи?

  Ответить  
 
 автор: АЯС   (01.11.2011 в 12:59)   письмо автору
 
   для: Гость   (01.11.2011 в 12:42)
 

Всякий скриптовой блок (с кодом внутри, либо с адресом внешнего скрипта - это без разницы) исполняется браузером СРАЗУ и исполняется ПОСТРОЧНО, даже не дожидаясь поступления в браузер закрывающего тега </script>. Никакой "инициализации скриптов" в браузерах не бывает.

Поэтому "потом проверять" (ваш вариант 1), "пробегать по списку подключенных скриптов" (вариант 2) - это всё уже будет ПОСЛЕ исполнения скриптов.
"Поздно пить боржоми, когда почки отвалились"(с)

Так что прислушайтесь к моему "конструктивному совету".
Ибо он и есть единственно возможная идея по самому вопросу.
Других каких-либо "идей" просто не может быть.

  Ответить  
 
 автор: Гость   (02.11.2011 в 07:37)   письмо автору
467 байт
 
   для: АЯС   (01.11.2011 в 12:59)
 

Я понимаю что скрипт запустится в любом случае, но мы же можем ему сказать чтоб он завершил свою работу и пошел бездельничать, плевать в потолок и т.п.

В аттаче - пример решения, меня просто интересует - есть ли подводные камни. Или хотя бы очевидные минусы такой реализации? (а то может я их просто не вижу).

  Ответить  
 
 автор: АЯС   (02.11.2011 в 09:09)   письмо автору
 
   для: Гость   (02.11.2011 в 07:37)
 

Нормальный такой способ...
Очень похож на использованный в Киргизии в прошедшее воскресенье - там во избежание повторного голосования большие пальцы левой руки всех избирателей маркировали несмываемой краской - http://www.rosbalt.ru/exussr/2011/10/26/905368.html

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

  Ответить  
 
 автор: Гость   (02.11.2011 в 09:36)   письмо автору
 
   для: АЯС   (02.11.2011 в 09:09)
 

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

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

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