2009-01-09 5 views
2

Lorsqu'un site comporte des annonces Flash tierces, est-il possible que le site effectue le suivi des clics sur le flash? Les fichiers Flash n'étant pas créés par le site, ils ne peuvent pas être modifiés. Toutefois, le site souhaite confirmer les décomptes de clics que l'agence de publicité rapporte avec son propre suivi des clics. JavaScript onclick (ou d'autres événements de souris) attachés à l'objet ou les balises embed ne fonctionnent pas.Suivi des clics sur une annonce Flash

Ce que j'ai essayé le plus récemment, c'est de placer un div invisible flottant sur le flash et d'y attacher l'événement click. Cependant, cela ne fonctionne pas bien dans IE.

Une alternative à laquelle je pense est d'utiliser mon propre chargeur Flash SWF. Le nouveau fichier SWF chargera le fichier SWF publicitaire en tant que film qu'il affiche. Ensuite, chaque fois qu'un clic se produit, le flash du chargeur déclenche mon JS de suivi des clics, puis permet à l'événement click de continuer sur le flash publicitaire. Est-ce que cela semble possible/faisable?

Addendum: J'ai deux questions au sujet de la méthode de chargement:
1) Peut-un flash de domaine example.com charger un fichier swf de ads.mordor.com?
2) Un swf chargé dans un autre swf peut-il avoir des événements click?

+0

Je crois que la réponse aux deux questions est oui. – Soviut

Répondre

1

Votre technique de chargement semble la plus saine. Un des avantages est, vous pouvez le rendre générique afin qu'il puisse charger n'importe quelle annonce que vous voulez, avec autant d'instances sur la page que vous avez besoin, tout en donnant toujours les mêmes données de clic. Cela simplifie la nécessité de capturer plusieurs types de données de clic que les différentes annonces Flash produisent parfois.

Voici un code que j'ai commencé à travailler, désolé d'avance pour les gros extraits.

ImportMe.as (a une occurrence de bouton sur la scène 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 (charges le clip ImportMe.swf généré à partir du code précédent)

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"); 
     } 
    } 
} 

La seule chose que cet exemple ne vérifie pas, c'est si l'événement externe se déclenchera avant que le clip interne ne redirige l'URL.

+0

Mais est-ce réellement possible? Mon actionscript est rouillé, donc avant de le dépoussiérer je veux savoir si c'est faisable. – Rob

+0

Il semble que vous deviez savoir comment activer le lien dans l'annonce Flash, ce qui peut nécessiter que vous sachiez comment il a été créé. On dirait que ça peut être difficile, mais là encore mon actioncript est probablement plus rouillé que le vôtre ... – dtc

+0

Je pense que les événements de clic dans la bulle flash comme ils le font en HTML/DOM/JS, quelqu'un peut-il confirmer cela? – Rob

Questions connexes