单击视频时触发jQuery函数

时间:2010-04-26 16:09:41

标签: flash jquery-selectors

我设置了一个函数,只要在页面上点击某些东西,使用ExternalInterface就可以在mp3播放器中暂停声音,但我在IE中遇到了问题。

设置如下:我有一个视频页面,可以使用RSS调出YouTube视频列表。最近的视频在名为“display”的div中显示在页面上。然后,Feed中的所有其他视频都显示为缩略图和链接...如果您单击其中一个,则会替换主“显示”视频并开始播放。所有这一切都很好。

我想要的是,只要视频开始,页面上的mp3播放器就会暂停音乐。

ExternalInterface功能正常工作。只要点击其中一个LINKS,mp3播放器就会停止,视频会启动等等。

问题是我还希望它在点击MAIN视频时停止。显然,由于这是从YouTube加载的外部视频,我无法访问FLA来添加自己的ExternalAccess代码。

我尝试在视频对象中添加一个ID,然后将其用作jQuery中的选择器来调用stopMovie函数......不行。我已经尝试为它添加一个类,然后在单击该类时调用stopMovie函数。我已经尝试将点击功能放在视频加载的div上......没有任何效果。如果我删除主视频,只有一个空div,然后单击div,MP3播放器停止...但如果我将视频加载到div并单击它,没有任何反应(在IE中......它在工作中FF)。

显然jQuery没有收到视频被点击的消息。有任何建议或解决方法吗?

The 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 个答案:

答案 0 :(得分:1)

我不确定这会解决你的问题但是它的价值是什么 - 我有一个IE的Flash问题,其中嵌入的对象总是最顶层的,并且不允许基于z-index css显示周围的html结构。我所做的是将wmode参数设置为透明并修复它。也许类似的事情发生在这里,视频在IE中是最顶层的,并且掩埋了你的事件所绑定的周围的div。

答案 1 :(得分:0)

我猜IE没有为实际的swf对象触发click事件。

您是否尝试将事件处理程序放在#display div上?