ЧАСТНОЕ ФОТО
на главную подписаться на рассылку сайта cделать стартовой
WEB-БИБЛИОТЕКА
Статьи на сайте

DELPHI

HTML

WINAPI

БЕЗОПАСНОСТЬ

JAVA
Пособия по JavaScript Скрипты

CLIPART

FAQ по Delphi

Неофициальный F.A.Q. эхо-конференции RU.DELPHI

Выборочный FAQ по некоторым интересным вопросам. Часть 1

Выборочный FAQ по некоторым интересным вопросам. Часть 2

FAQ: от Turbo/Borland Pascal к Delphi

 Разное
На главную
Написать письмо
Подписаться на рассылку
Cделать стартовой
ОБРАТНАЯ СВЯЗЬ

Для просмотра сайта рекомендуется :
-Разрешение : 800*600
-Броузер : Internet Explorer
-Для более эффективного
просмотра нажмите F11.
Как я озвучил ссылки щелчками при помощи обычного Java Script

Как я озвучил ссылки щелчками при помощи обычного 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>
Алексей Моховой

Hosted by uCoz