当网站有第三方Flash广告时,该网站是否可以跟踪点击闪存?由于Flash文件不是由站点创建的,因此无法更改。但该网站希望通过自己的点击跟踪确认广告代理商报告的点击率。
附加到对象或嵌入代码的JavaScript onclick(或其他鼠标事件)不起作用。
我最近尝试过的是在flash上放置一个浮动的不可见div并将click事件附加到它上面。但是这在IE中运行不佳。
我想到的另一种方法是使用我自己的Flash加载程序SWF。新的SWF会将广告SWF文件作为其显示的电影加载。然后,只要发生点击,加载程序闪存就会触发我的点击跟踪JS,然后允许点击事件继续进行广告Flash。这听起来可行/可行吗?
附录:我对加载方法有两个问题:
1)来自域example.com的闪存可以从ads.mordor.com加载swf文件吗?
2)在另一个swf中加载的swf是否都可以获得点击事件?
答案 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重定向之前触发。