Звук jQuery

#javascript #jquery #audio

#javascript #jquery #Аудио

Вопрос:

Я использую плагин jQuery Sound для создания некоторых звуковых эффектов на своем сайте, но не могу заставить его воспроизводиться. Я получаю это сообщение:

 settings.events.error(null, {msg: "You have not yet bound the sound player to 
this element"});    
 

Что я делаю не так? Вот мой код:

 <script type="text/javascript">
 var $j = jQuery.noConflict();
 $j(".sound1").sound({swf: url});
 $j(".sound1").load(url);
 $j(".sound1").play();
 $j(".sound1").pause();
 $j(".sound1").stop();
 $j(".sound1").volume(0-100);
 $j('.sound1').mouseover(function() {
 $j(".sound1").play('/messages4u/2011/images/october/sound1.mp3');
});
</script>
 

Я не уверен, все ли нужно в коде, но я не настолько хорош в JS и нуждаюсь в некоторой помощи! Нужно ли указывать URL-адреса? Если да, то к чему?

Комментарии:

1. Несвязанный: в общем смысле вы можете захотеть избежать повторного выбора каждый раз: `$j(‘…’).method1().method2() или var elem = $j(…); elem.method1(); elem.method2()

Ответ №1:

Я вообще не знаю API-интерфейсов JS-with-FLASH, но в качестве очень простого наблюдения, если на странице есть загружаемый SWF-компонент, похоже, что этот JS запускается до его загрузки. Вам нужно будет делегировать событие или использовать обратный вызов, если он доступен.

Или еще более простой: включен ли компонент flash на странице? Этот проект кажется заброшенным (нет официальной домашней страницы, когда я искал API); они включили его в загрузку, которую вы использовали?

Поскольку в сообщении об ошибке указано «на этом элементе», возможно ли, что компонент Flash не прослушивает элемент с классом «sound1»? Есть ли на самом деле элемент с этим классом на странице?

Я должен признать, я, вероятно, не должен был пытаться отвечать с таким количеством неизвестных. Плагин довольно старый и не поддерживается, поэтому я не смог найти демонстрационную страницу, и я не хочу устанавливать все это целиком. У вас есть прямая ссылка?

Комментарии:

1. В него были включены 2 флэш-файла, которые были загружены, но я предположил, что JS вызвал их. Хм

2. Я не знаю, будет ли загрузка Flash «блокировать» загрузку страницы. Они все еще могут загружаться в фоновом режиме при попытке запуска JS. Или, если это блокирующий вызов, может быть, они просто в неправильном порядке в голове? Еще одно предложение в моем основном ответе.

3. Линда, я не совсем понимаю, как работает компонент Flash, но это совершенно ясно: jQuery настроен на запуск нескольких функций (включая «воспроизведение») для элемента. В коде этого сообщения этот элемент имеет класс «sound1». В вашем примере он имеет идентификатор «sound». На вашей тестовой странице нет элемента с идентификатором «sound», из-за которого возникает ошибка. Я не уверен, какова методология выбора селектора «#sound» или как компонент Flash привязывается к «#sound», но без этого элемента JavaScript, безусловно, выйдет из строя.

4. Спасибо за помощь. Я изменил идентификатор на звук по всем направлениям, но когда я смотрю, я вижу, что первая ошибка гласит: URL не определен. Я загружаю SWF-проигрыватель, затем у него есть LOAD: URL, и я понятия не имею, что туда поместить, я попробовал звуковой файл, файл actionscript и SWF-файл. Есть идеи? Также у вас есть решение, которое будет воспроизводить звук при наведении курсора мыши? Я нашел несколько, но либо они вообще не работают. Они работают только в IE 9 и других браузерах. Мне нужно решение, которое работает в IE 8 и других браузерах. Пока это очень расстраивает. Жизнь кроссбраузерной совместимости…

5. Я бы подумал, что LOAD: URL должен быть фактическим URL-адресом со звуком, который вы хотите воспроизвести. Для тестирования просто введите URL-адрес в адресную строку браузера, и он должен попытаться загрузить (не воспроизвести) звук.