【问题标题】:How to listen for events with swfobject (like "onVideoEnded")如何使用 swfobject 监听事件(如“onVideoEnded”)
【发布时间】:2011-12-20 12:14:52
【问题描述】:

我正在使用 swfobject 的静态发布方法将 swf 电影嵌入到我的 html 中:

<object id="swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="300">
    <param name="movie" value="some.swf" />
    <param name="play" value="false" />
    <param name="menu" value="true" />
    <param name="allowFullScreen" value="true" />
    <param name="loop" value="false" />
    <param name="FlashVars" value="javascriptCallbackFunction=onJavaScriptBridgeCreated" />
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="some.swf" width="400" height="300">
    <!--<![endif]-->
      <p><a href="http://www.adobe.com/go/getflash">
        <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
    </a></p>
    <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
  </object>

我想在视频播放完毕后触发 Javascript 函数,并尝试在 flashvars 参数中使用上述回调函数。我的 Javascript 函数如下所示:

function onJavaScriptBridgeCreated(playerId) {
var player = document.getElementById(playerId);
player.addEventListener("complete", "completeFunc");}

function completeFunc() {
alert('video ended');}

我在http://forums.adobe.com/thread/791624 找到了这种方法,并将其修改为静态发布方法(http://code.google.com/p/swfobject/wiki/documentation)。

但问题是,函数 completeFunc 从未被调用过,我不知道为什么。

如果你能帮助我,我会很高兴。

【问题讨论】:

    标签: javascript flash dom-events embed swfobject


    【解决方案1】:

    我无法与 onJavaScriptBridgeCreated 代码对话,但是您的 SWFObject 代码不正确,您需要在两个 &lt;object&gt; 节点中包含 &lt;param&gt; 节点,如下所示:

    <object id="swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="300">
        <param name="movie" value="some.swf" />
        <param name="play" value="false" />
        <param name="menu" value="true" />
        <param name="allowFullScreen" value="true" />
        <param name="loop" value="false" />
        <param name="FlashVars" value="javascriptCallbackFunction=onJavaScriptBridgeCreated" />
        <!--[if !IE]>-->
        <object type="application/x-shockwave-flash" data="some.swf" width="400" height="300">
            <param name="play" value="false" />
            <param name="menu" value="true" />
            <param name="allowFullScreen" value="true" />
            <param name="loop" value="false" />
            <param name="FlashVars" value="javascriptCallbackFunction=onJavaScriptBridgeCreated" />
        <!--<![endif]-->
          <p><a href="http://www.adobe.com/go/getflash">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
        </a></p>
        <!--[if !IE]>-->
        </object>
        <!--<![endif]-->
      </object>
    

    唯一的例外是'movie'参数,它只被IE在第一个&lt;object&gt;中使用

    【讨论】:

      【解决方案2】:

      我已经通过使用 flowplayer 解决了这个问题。它非常易于使用并提供足够的配置可能性。无论如何感谢您的帮助。

      【讨论】:

        猜你喜欢
        • 2019-08-24
        • 2017-09-20
        • 1970-01-01
        • 1970-01-01
        • 2015-07-19
        • 1970-01-01
        • 1970-01-01
        • 2012-06-21
        • 1970-01-01
        相关资源
        最近更新 更多