跟踪Flash广告上的点击次数

时间:2009-01-09 19:24:00

标签: flash

当网站有第三方Flash广告时,该网站是否可以跟踪点击闪存?由于Flash文件不是由站点创建的,因此无法更改。但该网站希望通过自己的点击跟踪确认广告代理商报告的点击率。

附加到对象或嵌入代码的JavaScript onclick(或其他鼠标事件)不起作用。

我最近尝试过的是在flash上​​放置一个浮动的不可见div并将click事件附加到它上面。但是这在IE中运行不佳。

我想到的另一种方法是使用我自己的Flash加载程序SWF。新的SWF会将广告SWF文件作为其显示的电影加载。然后,只要发生点击,加载程序闪存就会触发我的点击跟踪JS,然后允许点击事件继续进行广告Flash。这听起来可行/可行吗?

附录:我对加载方法有两个问题:
1)来自域example.com的闪存可以从ads.mordor.com加载swf文件吗? 2)在另一个swf中加载的swf是否都可以获得点击事件?

1 个答案:

答案 0 :(得分:1)

你的装载技术似乎最明智。其中一个好处是,您可以将其设置为通用,以便它可以根据需要在页面上添加任意数量的任何广告,同时始终产生相同的点击数据。这简化了捕获不同Flash广告有时会产生的多种点击数据的需求。

以下是我工作的一些代码,对于大型代码段提前抱歉。

ImportMe.as (在名为myButton的舞台上有一个按钮实例)

package
{
    import flash.display.MovieClip;
    import flash.display.SimpleButton;
    import flash.events.MouseEvent;

    public class ImportMe extends MovieClip
    {
        public function ImportMe()
        {
            myButton.addEventListener(MouseEvent.CLICK, button_OnClick);
        }

        private function button_OnClick(event:MouseEvent):void
        {
            // shifts the button right 10 pixels to prove the event fired
            myButton.x += 10;
        }
    }
}

Tester.as (加载从上一代码生成的ImportMe.swf剪辑)

package
{
    import flash.display.MovieClip;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.events.*;

    public class Tester extends MovieClip
    {
        public function Tester()
        {
            var request:URLRequest = new URLRequest("importme.swf");
            var loader:Loader = new Loader();
            loader.addEventListener(Event.COMPLETE, loader_OnComplete);
            loader.addEventListener(MouseEvent.CLICK, loader_OnClick);
            loader.load(request);
            addChild(loader);
        }

        private function loader_OnComplete(event:Event):void
        {
            trace("loaded");
        }

        private function loader_OnClick(event:MouseEvent):void
        {
            trace("clicked");
        }
    }
}

此示例唯一不测试的是外部事件是否会在内部剪辑执行URL重定向之前触发。