【问题标题】:Track a click on a flash movie (object / embed) with jQuery使用 jQuery 跟踪对 Flash 电影(对象/嵌入)的点击
【发布时间】:2011-07-19 22:16:31
【问题描述】:

我正在制作一个动态横幅系统,它可以处理 img 横幅以及使用对象/嵌入完成的 flash 横幅。整个站点大量使用 jQuery,包括处理“点击”事件。

在跟踪图像本身的点击时,这显然不是问题(我跟踪父 DIV 标记上的点击。但是,当广告是 SWF 时它会失败,正如我所怀疑的那样。

是否有 jQuery 解决方法可以让我使用 DOM 捕获对 Flash 元素的点击?

【问题讨论】:

    标签: jquery flash click capture


    【解决方案1】:

    我知道这是很久以前发布的并且已经回答了,但我只是想为未来的网站访问者添加一个更简单的解决方案。虽然嵌入的 SWF 文件会吞下 onclick 事件,但它不会吞下 onmousedown 事件。诀窍是在 param 标记和 embed 标记中将 wmode 设置为透明。

    <div id="layer1" onmousedown="alert('mouse down')"> 
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
    codebase="http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" 
    width="799" height="741" id="myMovieName">
    <param name="movie" value="_data.swf" /> 
    <param name="quality" value="high" />
    <param name="play" value="true" />
    <param name="loop" value="true" />
    <param name="wmode" value="transparent" />
    <embed src="_data.swf" quality=high bgcolor=#FFFFFF width="799" height="741" 
    name="myMovieName" type="application/x-shockwave-flash" 
    play="true" loop="true" wmode="transparent"
    pluginspage="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
    </embed>
    </object>
    </div>
    

    您可以使用 jQuery 来绑定 mousedown 事件,如下所示:

    $('#layer1').mousedown(function() {
      alert('mouse down');
    });
    

    【讨论】:

    • 任何可能的方法来通过双击做同样的事情?
    【解决方案2】:

    如果您可以访问 SWF 的源代码,则可以使用ExternalInterface 与包含的 html 页面进行通信。

    //inside the flash movie:
    stage.addEventListener(MouseEvent.CLICK, onClick);
    function onClick(e:MouseEvent):void
    {
       ExternalInterface.call("handleFlashClick", [parameters to the method]);
    }
    
    //javascript in the containing html page
    function handleFlashClick()
    {
      //call the jQuery method here.
    }
    

    【讨论】:

    • 我根本无法访问源代码,它是一个横幅系统,允许客户将自己的 SWF 横幅上传到系统。话虽如此,链接一个“内部”横幅会更好吗??
    【解决方案3】:

    我能够通过以下方式获取网络线的答案并获得对象点击。

    // Podcast player GA event tracking
    var podcast_player = $('object.podcast-player');
    if( podcast_player.length > 0 )
    {
        podcast_player.live('mousedown',function(){
            _gaq.push(['_trackEvent', 'Podcast', 'Play']);
        });
    }
    

    我希望这对其他人有帮助,感谢 webwires

    【讨论】:

      猜你喜欢
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      相关资源
      最近更新 更多