2009-01-09 181 views
2

当一个网站有第三方Flash广告时,网站是否有可能跟踪点击闪光灯?由于Flash文件不是由网站创建的,因此无法更改。但该网站希望确认广告代理机构使用自己的点击跟踪报告的点击率。跟踪点击Flash广告

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

我最近尝试过的方法是在闪光灯上放置一个浮动不可见的div,并将点击事件附加到该部分。但是,这在IE中不起作用。

另一个我想到的是使用我自己的Flash加载器SWF。新的SWF会将广告SWF文件加载为它所显示的影片。然后,无论何时发生点击,加载器Flash都会触发我的点击跟踪JS,然后允许点击事件继续进行广告Flash。这听起来可能/可行吗?

附录:我对装载机方法两个问题:
1)从域example.com闪光灯可以加载ads.mordor.com的SWF文件?
2)在另一个swf中加载的swf是否可以获得点击事件?

+0

我相信对这两个问题的答案是肯定的。 – Soviut 2009-01-09 22:53:46

回答

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重定向之前触发。

+0

但实际上可能吗?我的动作是生锈的,所以在我把它关掉之前,我想知道它是否可行。 – Rob 2009-01-09 19:48:24