2010-04-28 2 views
3

Есть ли простой, быстрый способ, чтобы FF и IE рассматривали скрытые JW-плееры одинаково?JW Player: кросс-браузер «display: none» поведение игрока

Я размещаю разные экземпляры проигрывателя динамически в jQuery сгенерированных вкладках. По сути, переключающие вкладки скрывают родительский div каждого игрока. В FireFox переключатель табуляции и сопутствующий «дисплей» заменяет плеер. Это не происходит в IE. Я бы хотел.

Что является самым простым способом заставить оба браузера действовать одинаково? Я надеюсь на решение CSS/HTML, либо тщательно, как игроки встроены, либо правило стиля. В противном случае, я полагаю, мне нужно будет добавить прослушиватель элементов, который сравнивает текущий выбранный идентификатор вкладки с активными игроками в настоящее время ... но я ' d скорее не идти по этому маршруту.

Спасибо за советы!

EDIT: Я бы предпочел изменить плеер CSS или разметку при изменении вкладок, чем отправлять события остановки всем игрокам, но игроку на текущей активной вкладке.

+1

У меня возникла идея, связанная с 'RemoveChild' и' AppendChild', но без костей: http://www.actionscript.org/forums/showthread.php3?t=139866 возможно, что-то там помогает, парень был в Такая же ситуация. –

ответ

3

Это проблема с Internet Explorer. Хотя FF, Chrome и Safari будут убивать Flash, IE не делает этого. Единственный способ, которым мы смогли убедиться, что игрок останавливается, - это отслеживать всех активных игроков на странице и останавливать вызов.

Бест,

Zach

Разработчик, LongTail Видео

+0

нашел это: «Единственный метод, чтобы снова установить скрытый и видимый объект Flash при сохранении запущенного объекта, оказывается, что он устанавливает класс CSS с видимостью: скрытый» https://devio.wordpress.com/2012/05/11/chrome-firefox-reset-flash-plugin-if-display-property-changes-update/ – avivr

0

Если вы используете JavaScript для изменения вкладок, почему вы надеетесь на чистое решение CSS/HTML для вашей проблемы?

Я думаю, вы должны использовать JavaScript.

Посмотрите на API JW игрока: http://developer.longtailvideo.com/trac/wiki/Player5Api

Вы можете вызвать метод остановки() на проигрывателе.

player.stop(); 
+0

Да, я уже контролирую игрока почти полностью через API. Проблема в том, что существует более одного игрока, что усложняет ситуацию. Для FF, по крайней мере, «display: none» на div предка останавливает игрока, если он играет, и заставляет игрока не слышать отправленные события. Я надеялся, что у IE есть правило стиля, которое так же повлияло на игрока. Кроме того, я должен отслеживать всех игроков и добавлять отправку события остановки для всех из них, за исключением того, что отображается на вкладке «Это», что более активно. Мне лень. –

0

К сожалению, мой друг. У меня есть большая проблема, которая не заставляет меня спать ... У меня есть сайт с: - div с видео (jwplayer) - div с галереей (лайтбокс, при щелчке по изображению)

Если видеоигра и пользователь (только с IE) нажимают на изображение, popover появляется поверх видео, видео продолжает воспроизводиться (ок!), Но видео становится пустым! Когда я закрываю изображение, видеоролик воспроизводится нормально, но видео по-прежнему остается пустым (все черные).

Я пытался использовать то, что вы здесь написали, но безуспешно. Это сценарий, который я должен использовать для вставки jwplayer.

<div id="Player">player should load here</div> 
    <script language="javascript" type="text/javascript"> 
    var flashvars = {}; 
    flashvars.linkfromdisplay = "true"; 
    flashvars.autostart = "false"; 
    flashvars.height = "' . $h . '"; 
    flashvars.controlbar = "over"; 
    flashvars.width = "' . $w . '"; 
    flashvars.repeat = "false"; 
    flashvars.bufferlength = "5"; 
    flashvars.displayheight = "' . $h . '"; 
    flashvars.displaywidth = "' . $w . '"; 
    flashvars.file = "http://blablabla.com"; 
    flashvars.type = "vdox"; 
    flashvars.provider = "vdox"; 
    var params = {}; 
    params.menu = "true"; 
    params.allowscriptaccess = "always"; 
    params.allowfullscreen = "true"; 
    params.wmode = "transparent"; 
    params.windowless="true"; 
    var attributes = {}; 
    attributes.id = "Player"; 
    attributes.name = "Player"; 
    swfobject.embedSWF("' . get_bloginfo("template_directory") . '/embed/mediaplayer.swf", "Player", "' . $w . '", "' . $h . '", "8","expressInstall.swf", flashvars, params, attributes); 
    </script> 

Я пытался также остановить с помощью JS видео перед открытым поповер (player1.sendEvent («СТОП»);): видео останавливается, но если нажать на кнопку воспроизведения, остается черным.

Я попытался также удалить элемент видео с помощью jquery, сохранив его в переменной. Затем я вставляю кнопку «восстановить видео»: в Chrome работает, в IE снова появляется видеообъект, он играет, но все черное. Спасибо

+1

Вы должны задать новый вопрос. –