如何捕捉Flash播放器上的点击事件?

4

我在网页上使用SWFObject作为Flash播放器。播放器通常有像播放、停止、暂停等按钮。我需要在用户点击任何按钮时捕获这个时刻,并执行一些JS函数。非常抱歉我的英语不好,提前感谢您的帮助。

附注:我没有我的swf文件的源代码。

4个回答

4
据我所知,这是通过getURL()函数完成的。您需要在Flash文件的操作脚本中定义以下内容:
this.onClick = function(){ 
    getURL("javascript:yourFunctionName();");
};

这意味着你不能仅仅拿任何Flash文件并让它调用JS函数,必须在Flash文件内部定义它。
如果我错了,我很想知道如何更通用地实现这一点,而不需要编辑Flash本身。

3

稍等一下:我没有我的Flash网页播放器的源代码。 - user52005
毫无疑问,当您可以访问源代码时,ExternalInterface是正确的选择。这是一件美妙的事情。 :) - Christian Nunciato

1

您可以使用onPress方法。

示例

[button_name].onPress = function(){

//在此处编写要执行的操作

}


1

嗯...

冒着冒险的风险,我实际上认为,在跨浏览器Javascript中,没有任何方法可以钩入特定的Flash播放器活动。事实上,如果有的话,我会非常惊讶 - 尽管我很乐意从比我更有知识的人那里听到不同的声音。:)

假设这是真的,除了通过监听(在您页面上下文中运行的Javascript)ActiveX /插件对象本身引发的焦点和单击事件的组合之外(这可能不会非常具体或可靠-我甚至认为单击事件不会被引发),我怀疑你不会有太多的好运。

从我迄今为止进行的简短测试中:

window.onload = function()
{
    document.onclick = function()
    {
        alert("Clicked the page!");
    }

    document.getElementById("mySWFObjectID").onfocus = function()
    {
        alert("Focused the player!");
    }

    document.getElementById("mySWFObjectID").onclick = function()
    {
        alert("Clicked the player!");
    }
}

...玩家似乎没有将点击事件传递到页面;在IE中,焦点事件会触发,但在Firefox中不会触发,并且只有在控件获得焦点时才触发。因此,除了编写可能需要浏览器插件之外,以获取比JavaScript级别更低的访问权限,您可能无法解决这个问题。

但是,如果有人知道其他方法,请告诉我们...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接