2010-08-25 2 views
1

Перекрестная ссылка на Flowplayer forums, но ответа там пока нет, поэтому я надеюсь, что кто-то здесь может помочь.Почему мой плейлист не работает?

У меня совсем нет успеха с использованием плагина Playlist. Я внимательно следил за примерами в http://flowplayer.org/plugins/javascript/playlist.html, и я запускаю первый клип, но плагин Playlist, похоже, не регистрируется. Видео загружается и воспроизводится, поэтому FlowPlayer загружается должным образом, но плейлист не прикрепляет никаких функций к моим объектам плейлиста.

Я подтвердил, что скрипт плей-листа загружается: я добавил alert("playlist!"); в начало flowplayer.playlist-3.0.8.js, сразу после начального блока комментариев и перед началом кода функции. Когда я загружаю свою веб-страницу, я вижу предупреждение. Я получаю те же результаты, независимо от того, используете ли вы минимальные или нормальные версии скриптов и вызываю ли я функцию flowplayer с flowplayer() или $f(). Я использую flowplayer 3.2.3 и playlist 3.0.8.

Вот простейшая статическая страница, которая пытается отобразить FlowPlayer и два клипа в галерее: появляется FlowPlayer, но нажатие на любую из ссылок галереи заменяет текущую страницу видео, воспроизводимым непосредственно в окне браузера, вместо этого сохранить меня на странице HTML и воспроизвести видео в экземпляре FlowPlayer.

Если я добавляю параметр конфигурации для вызова FlowPlayer и предоставляю клип по умолчанию, то этот клип воспроизводится, но снова ссылки в галерее просто берут меня в необработанный клип, а не нажимают клип в FlowPlayer.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>test flowplayer</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script> 
    <script src="/_library/script/flowplayer/flowplayer-3.2.3.min.js" type="text/javascript"></script> 
    <script src="/_library/script/flowplayer/flowplayer.playlist-3.0.8.min.js" type="text/javascript"></script> 
</head> 
<body> 
    <div id="player" style="display: block; width: 776px; height: 432px;"></div> 
    <div id="gallery"> 
     <a href="/resources/video/Empowerment_TV30_776.mp4">video 1</a> 
     <a href="/resources/video/Commercial_776.mp4">video 2</a> 
    </div> 
    <script type="text/javascript"> 
     $(function() { 
      $f("player", "/_library/script/flowplayer/flowplayer-3.2.3.swf") 
      .playlist("gallery"); 
     }); 
    </script> 
</body> 
</html> 

Любая идея, что я делаю неправильно? Любая помощь оценивается, дайте мне знать, если вам нужно больше деталей.

Спасибо! - Val

ответ

0

OK, исправленный.

Многие примеры используют класс в контейнере списка воспроизведения. В примерах, использующих класс, функция списка воспроизведения передается с помощью CSS-селектора - обычно что-то вроде playlist("div.gallery")

Я изменил свою разметку, чтобы использовать класс, изменил параметр на playlist() на полностью квалифицированный селектор CSS, и он работает! !!

Теперь я не хочу использовать класс. У меня есть один элемент списка воспроизведения, поэтому я хочу использовать идентификатор. Я изменил разметку обратно в ID:

<div id="gallery"> 
    <a href="video1">video1</a> 
    <a href="video2">video2</a> 
</div> 

и изменил вызывающий использовать селектор CSS для идентификаторов:

playlist("div#gallery"); 

И это тоже работает!

Наконец, я подумал, что мне нужно, чтобы указать элемент, который имеет идентификатор плейлиста, и я не - я могу дать ему только селектор CSS ID:

playlist("#gallery"); 

Я думаю, что моя проблема была что с основным сценарием flowplayer вы можете обратиться к элементу-заполнителю без квалификатора . или #, например $f("player"); вместо $f("#player");. Но плагин Playlist более придирчив, и вам нужно использовать квалификатор.

Все, что боль для одного персонажа!

0

$f("player", "/_library/script/flowplayer/flowplayer-3.2.3.swf").playlist("gallery");

может быть?

.playlist() не является функцией $(function() {})

+0

Да, Джастин тоже указал на это. Исправлено это, ошибка JavaScript ушла, но все еще нет функций Playlist. – Val

0
$(function() {}) 

как вы зарегистрировать обработчик событий для load event. Из-за этого код внутри него не выполняется до тех пор, пока браузер не активирует событие load, и возможно, что плагин пока недоступен.

Кроме того, вы не внимательно следите за учебниками. Кодируют есть, как этот

$(function() { 
    // setup player without "internal" playlists 
    $f("player2", "http://releases.flowplayer.org/swf/flowplayer-3.2.3.swf", { 
     clip: {baseUrl: 'http://blip.tv/file/get'} 
    // use playlist plugin. again loop is true 
    }).playlist("div.petrol", {loop:true}); 
}); 

Обратите внимание, что .playlist называется по возвращению $f(), а не на .

+0

Я думал то же самое и пытался это; просто попробовал снова с помощью $ (function() {$ f ("player", "/_library/script/flowplayer/flowplayer-3.2.3.swf").playlist("gallery");}); - В настоящее время я не получаю ошибки JavaScript, жалуясь на то, что «плейлист не является функцией», но я не получаю функциональность плейлиста: нажатие на ссылки в плейлисте загружает MP4 прямо в окно, а не в Player. Что касается доступного плагина, я думал, что вызовы скриптов были синхронными, и мы не дошли до моего кода до тех пор, пока не будут загружены ссылочные скрипты в HEAD? – Val

+0

Я исправил вопрос, чтобы переместить вызов .playlist(), чтобы связать вызов $ f() и удалить ссылки на ошибки JavaScript. По-прежнему не хватает функциональности плейлиста. – Val