RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

Как я озвучил ссылки щелчками при помощи обычного Java Script.

Автор: Алексей Моховой Сайт: http://dweb.ru/     Рейтинг: N/A из 7       <<НАЗАД
   
   Как я озвучил ссылки щелчками при помощи обычного Java Script. Лучший способ сохранить авторство на воплощение идеи, это сами понимаете, рассказать о ней во всеуслышание. Но перейдем к делу, друзья мои. Идея реализовать озвучание ссылок или кнопок на сайте, чтобы при наведении на них мышом они щелкали, закралась в мой мозг совсем недавно. Дабы не утруждать себя, я попробовал искать готовые идеи. Задавал вопросы на конференциях, искал по сайтам, но так ничего вразумительного и не нашел. Реализация озвучания кнопок попадалась, но она была или на очень сложных скриптах с Wav файлами, либо, того хуже, на Java апплетах или, еще и еще хуже, на Macromedia. А для меня, как сторонника чистого html с Java и VB скриптами, это совсем не понравилось :о(
   
   Опять придумывать все с нуля. Итак, для начала сформировалась сама идея реализации. Она заключалась примерно в этом: При наведении на ссылку срабатывает событие onMouseOver на JavaScript которое запускает некую процедуру или функцию. Та же в свое время, должна проиграть щелчок. Легко сказать проиграть, а как вот? Ну сразу оставив версию реализации этой фишки на Нетскейпе (кстати когда Вы прочтете этот текст, то Вы сможете свободно сделать это и для Нетскейпа, надо будет только использовать EMBED и обычный фрейм. Но не будем торопить события!), я занялся воплощением ее для MSIE.
   
   Как заставить броузер Микрософта проиграть какой-нибудь музыкальный файл? - вставить тег <BGSOUND src="pesnia.mid" loop=1>, или pesnia.wav в зависимости от формата звукового файла. Вроде бы начали появляться первые отсветы в глубине туннеля :о) Поэтому подведем первые итоги. В тег ссылки вставляем событие onMouseOver примерно так:
   
   <A href="url.html" onMouseOver="sound()">Ссылка</A>
   
   И в начале документа html пишем скрипт, который бы выводил куда-нибудь тот BGSOUND. Как всегда, руководствуясь принципом: попытка не пытка, написал такой скрипт:
   
   <script language="JavaScript"><!--
   function sound(){
   document.write("<BGSOUND src=pesnia.mid loop=1>");}
   --></script>
   
   Божешь мой :-О, что получилось. Броузер правда проиграл музыку в MIDI формате, но он при этом показал чистую белую страницу созданную document.write и завис до окончания проигрыша песенки в midi формате. Приободренный тем, что он хоть играет песенку, я стал думать: а куда бы сгенерировать этот злосчастный BGSOUND, чтобы при этом остаться на нужной нам странице.
   
   Та же форма, или еще какой объект не подходили, надо ведь генерируемый тег вставлять непосредственно в код страницы. А если не в нашу страницу, а в другую... Которая бы тоже видна была... О это идея. Но единственный способ показать на экране не одну страницу, а две, является использование фреймов. Нда, а если их нет на странице, а если пользователь зайдет на страницу минуя главную и второй фрейм где прописывается бексаунд? И что тогда делать, ведь это приведет к ошибке в скрипте:о(
   
   И тут я осознал, что идею то я воплощаю для MSIE пользователей, и в нем можно использовать не обычные, а плавающие фреймы встраиваемые в документ! Ваууу... разнеслось по моей комнате, как в древние времена разнеслось слово Эврика воскликнутое Архимедом. Правда в моем случае, мой кот, до этого мирно дремавший на кресле, почему-то вторил мне громогласным МЯУ! Поняв что зря так раскричался, я отправился варить рыбу этому рыжему созданию, но мысли мои витали в дебрях Ява скриптов и хтмл тегов. Придя вскоре назад к своему адскому ящику, и первым заняв кресло (хоть какая-то выгода :о), я окончательно создал следующий скрипт:
   
   <script language="JavaScript"><!--
   var brous;
   function bsound(){
   brous = navigator.appName;
   if (brous.substring(0,1)=="M")
   top.blank.document.write("<BGSOUND src=pesnia.mid loop=1>");}
   --></script>
   
   Здесь есть защита от генерации тега в нетскейпе, который не увидит плавающий фрейм, и не будет пытаться писать BGSOUND в несуществующий объект. blank - это так обозван этот самый фрейм, который я в свою очередь сжал до нулевых размеров и поместил сразу после тега BODY вот так:
   
   <IFRAME FRAMEBORDER=0 HEIGHT=1 WIDTH=1 NAME="blank" SCROLLING=NO></IFRAME>
   
   Как видите, здесь нет обычного свойства SRC=url.html указывающего, какую страницу надо показывать внутри плавающего фрейма. Поэтому он ничего не грузит в себя. И при наведении мышом на ссылку с onMouseOver="sound()" он воспроизводил музыку, генерировав документ с фоновым звуком в этом невидимом фрейме! Осталось дело за малым, сделать этот самый щелчок.
   
   Сразу отказавшись от формата Wav из-за того, что файл звука щелчка, возможно, будет по объему больше самой страницы, я остановился на midi. И еще у меня были подозрения насчет того, а станет ли броузер вынимать звуковой файл из кеша, или грузить каждый раз заново. Кто знает эту продукцию микрософта. Поэтому щелчок мной стал делаться в midi формате. Нда, что только не приходится делать вебмастеру, и рисовать, и программировать, и верстать, и статьи придумывать, ну вот и музыку сочинять :о)
   
   Благо от меня требовалось сочинения самого короткого произведения в виде звука "щелк". Запустив Cakewalk, я убрал все возможные комментарии внутри midi файла, чтобы уменьшить до минимума размер файла, поставил на первом треке 10 midi канал, который отвечает за ударные, я в опции piano roll написал две короткие нотки отвечающие за тихий щелчок, и маленький "дзиньк". Больше ничего не регулировал, ни звук, ни разнос по колонкам, дабы не увеличить размер файла. В итоге творение pesnia.mid получилось величиной 60 байт. В заключение, я в cамое начало документа, как можно ближе к скрипту, поставил
   <BGSOUND src="pesnia.mid" loop=1>, дабы звук уже был загружен до наведения на ссылку. Вот и все!
   <IFRAME FRAMEBORDER=0 HEIGHT=1 WIDTH=1
   NAME="blank" SCROLLING=NO></IFRAME>
   <script language="JavaScript"><!--
   function sound(){
   top.blank.document.write("<BGSOUND src=qaz.mid loop=1>");}
   --></script>
   
   <A href="index.html" onMouseOver="sound()">Ссылка</A>
   
   
   
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool