Получение функции jQuery для запуска при нажатии видео - PullRequest
0 голосов
/ 26 апреля 2010

Я настроил функцию для приостановки звука в mp3-плеере при каждом нажатии определенных вещей на странице, используя ExternalInterface, но у меня проблема в IE.

Настройка такова: у меня есть страница с видео, которая вызывает список видео YouTube, используя RSS. Самое последнее видео отображается на странице в виде div, который называется «display». Затем все остальные видео в ленте отображаются в виде миниатюр и ссылок ... Если вы щелкнете по одному из них, то основное видео на дисплее будет заменено, и оно начнет воспроизводиться. Все это прекрасно работает.

Я хочу, чтобы mp3-плеер на странице приостанавливал музыку при каждом запуске видео.

Функция ExternalInterface работает правильно. При нажатии на одну из ССЫЛК mp3-плеер останавливается, и начинается воспроизведение видео и т. Д.

Проблема в том, что я также хочу, чтобы он останавливался при нажатии на ОСНОВНОЕ видео. Очевидно, что это внешнее видео, загруженное с YouTube, я не могу получить доступ к FLA, чтобы добавить собственный код ExternalAccess.

Я попытался добавить идентификатор к видеообъекту, а затем использовать его в качестве селектора в jQuery для вызова функции stopMovie ... нет. Я пытался добавить к нему класс, а затем вызывать функцию stopMovie при щелчке по классу. Я попытался поместить функцию щелчка в div, в который загружается видео ... ничего не работает. Если я удаляю основное видео и просто имею пустой div, затем нажимаю div, mp3-плеер останавливается ... но если я загружаю видео в div и нажимаю на него, ничего не происходит (в IE ... он работает в FF).

Очевидно, что jQuery не получает сообщение о том, что на видео щелкнули. Любые предложения или обходные пути?

Actionscript:

import flash.external.ExternalInterface;

ExternalInterface.addCallback("stopMovie", pauseSound);

function pauseSound(str:String):void {
    if (str == "stop") {
            if (my_channel) {
            song_position = my_channel.position;
            my_channel.stop();
            song_paused=true;
            }
    }
}

Код jQuery:

function getFlashMovie(movieName) {
  var isIE = navigator.appName.indexOf("Microsoft") != -1;
  return (isIE) ? window[movieName] : document[movieName];
}


function stopMovie() { 
    getFlashMovie('audio').stopMovie("stop");
            }

// показаны все методы, которые я пробовал //

$('#video_player').live("click", function(){
    stopMovie();
    });
$('.stopper').live("click", function(){
    stopMovie();
    });
$('#curVideo').live("click", function(){
    stopMovie();
    });
 $('#display object').live("click", function(){
    stopMovie();
    });

HTML:

<div id="video_player">
<div id="display">

(some PHP code here to call the feed)

<object id="curVideo" class="stopper" width="410" height="332"><param name="movie" value="<?php echo $videolink; ?>"></param><param name="allowFullScreen" value="true"></param><param name="wmode" value="transparent"></param><param name="allowscriptaccess" value="always"></param><embed src="<?php echo $videolink; ?>" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="410" height="332"></embed></object>
</div>
</div>

Ответы [ 2 ]

1 голос
/ 26 апреля 2010

Я не уверен, что это решит вашу проблему, но для чего бы это ни стоило - у меня была проблема с Flash в IE, когда встраивание объекта всегда было бы самым верхним и не позволяло отображать окружающую html-структуру на основе z-index css , Что я сделал, так это установил прозрачный параметр wmode, и это исправило его. Возможно, что-то похожее происходит здесь, когда видео находится на первом месте только в IE и скрывает окружающий div, с которым связаны ваши события.

0 голосов
/ 26 апреля 2010

Я предполагаю, что IE не запускает событие click для фактического объекта SWF.

Вы пытались вместо этого поместить обработчик событий в div #display?

...