Воспроизведение звука из javascript

Всяческий Бред - Идти на Главную Страницу >>>

Категории:

Полезные Сведенья
Кухонная Философия
Общество и его пороки
Новости
Еда и Питье
Техника
Разное
Личное
Природа
Фото/Видео
"Веселые" Картинки
Юмор


Пишите Письма



Реклама:

Реклама

February 16, 2010

Поразительно уебищно.

Не смотря на многочисленные опубликованные решения с embed, реально в FireFox не работает вообще нихуя, даже если скачать ебаный QuickTime, а в IE метод с использованием embed выдает предупреждение, от которого уже 20 раз напуганные вирусами юзера разбегаются как черт от ладана.

Что характерно - элемент ActiveX от самого Microsoft, но они таки все равно спрашивают "доверяете ли вы этому элементу ActiveX и этому сайту?". То есть, либо они не могут подружить собственный браузер с собственным ActiveX элементом, либо открыто признают, что в нем есть дыры, которые они не в состоянии закрыть и хакерский "сайт" в них все равно впихнет вирус.

Пидоры. Причем и MS, что в общем-то давно не удивительно, и разработчики FireFox, который традиционно вызывает наибольшее количество проблем.

Opera элементарно работает с embed без подргузки каких-либо плагинов и выебонов в виде предупреждений.

В итоге для Оперы так и было сделано с embed, а для IE пришлось использовать дневний, как говно мамонта, и уебищный тэг bgsound, а в FireFox и прочих браузерах просто звук не воспроизводить вообще, так как не понятно, какой именно эффект получит юзер в какой версии. Я бы лично обиделся, если бы мне пришлось непонятно зачем качать 50 мегов QuickTime (который он запрашивает, когда наталкивается на embed), от которого потом нет никакого толка.

В итоге выглядит это примерно так:

<bgsound id='sound'> - вставляется за <body>
<div id='dummy' style='visibility:hidden;'></div> вставляется перед </body>

В блок <script> вставляется функция:

function DHTMLSound(surl) {
var agt=navigator.userAgent.toLowerCase();
if (agt.indexOf("msie") != -1) document.all.sound.src = surl;
else if(agt.indexOf("opera") != -1) document.getElementById("dummy").innerHTML="<embed src='"+surl+"' type='audio/midi' hidden='true' autostart='true' loop='false'>";
}

передаваемый параметр surl - это урл звукового файла, который мы хотим воспроизводить.


Все эти мучения только для того, чтобы при получения нового сообщения в чате (путем XMLHttpRequest, без перегрузки страницы) окно квакало, привлекая внимание юзера.


Отмечу впрочем, что метод с Java Applet так же работает во всех трех браузерах. Но требует загрузить Java машину, если она не стоит. Что тоже может распугать юзеров. Так что уж сами решайте, юзать его или нет.

Все варианты решений наиболее внятно изложены на английском тут: http://www.phon.ucl.ac.uk/home/mark/audio/play.htm



Тэги: Feb2010 Личное Техника

Темы, имеющие некоторое отношение к этой (русскоязычный поиск в mysql все же очень не совершенен):
Плод американского социализма January 21, 2012
"Маленькие хитрости" программирования на JavaScript May 5, 2008
Программистское, злобное. June 8, 2008
Фраза дня November 4, 2017
Не перевелись еще программисты... December 14, 2007


posted by real_enforcer.livejournal.com at February 17, 2010 Свернуть
ну флэш же, чо изъёбываться-то?
posted by мини_я at February 17, 2010 Свернуть
Флэш, вообще-то, тоже адд-он и не является стандартным элементом браузера. Многие его не ставят или отключают потому что заебывают кислотные да еще и ставящие раком систему баннера.

Но дело таки не в этом. Я просто не понимаю, какого хуя в стандартном javascript нет хотя бы аналога тупейшего beep(), который был даже в языках для PC 30ти летней давности.
posted by real_enforcer.livejournal.com at February 18, 2010 Свернуть
ну, в мире воще много непонятного и нелогичного говна.

флэш встретить все-таки вероятней, чем квиктайм в том же фаерфоксе, и ие от него не бузит.



пользователь: пароль:
регистрироваться  Залогинится под OpenID


Архив:

Sep2018   Aug2018   Jul2018   Jun2018   May2018   Apr2018   Mar2018   Feb2018   Jan2018   Dec2017   Nov2017   Oct2017   Sep2017   Aug2017   Jul2017   Jun2017   May2017   Apr2017   Mar2017   Feb2017   Jan2017   Dec2016   Nov2016   Oct2016   Sep2016   Aug2016   Jul2016   Jun2016   May2016   Apr2016   Mar2016   Feb2016   Jan2016   Dec2015   Nov2015   Oct2015   Sep2015   Aug2015   Jul2015   Jun2015   May2015   Apr2015   Mar2015   Feb2015   Jan2015   Dec2014   Nov2014   Oct2014   Sep2014   Aug2014   Jul2014   Jun2014   May2014   Apr2014   Mar2014   Feb2014   Jan2014   Dec2013   Nov2013   Oct2013   Sep2013   Aug2013   Jul2013   Jun2013   May2013   Apr2013   Mar2013   Feb2013   Jan2013   Dec2012   Nov2012   Oct2012   Sep2012   Aug2012   Jul2012   Jun2012   May2012   Apr2012   Mar2012   Feb2012   Jan2012   Dec2011   Nov2011   Oct2011   Sep2011   Aug2011   Jul2011   Jun2011   May2011   Apr2011   Mar2011   Feb2011   Jan2011   Dec2010   Nov2010   Oct2010   Sep2010   Aug2010   Jul2010   Jun2010   May2010   Apr2010   Mar2010   Feb2010   Jan2010   Dec2009   Nov2009   Oct2009   Sep2009   Aug2009   Jul2009   Jun2009   May2009   Apr2009   Mar2009   Feb2009   Jan2009   Dec2008   Nov2008   Oct2008   Sep2008   Aug2008   Jul2008   Jun2008   May2008   Apr2008   Mar2008   Feb2008   Jan2008   Dec2007   Nov2007   Oct2007   Sep2007   Aug2007   Jul2007   Jun2007   May2007   Apr2007   Mar2007   Feb2007   Jan2007   Dec2006   Nov2006   Oct2006   Sep2006   Aug2006   Jul2006   Jun2006   May2006