Suivre un clic sur une animation flash (object / incorporer) avec jQuery

Je crée un système de bannière dynamic qui peut gérer les bannières img, ainsi que les bannières flash réalisées avec un object / intégré. L’ensemble du site utilise intensément jQuery, y compris la gestion des événements ‘click‘.

Ce n’est évidemment pas un problème pour le suivi des clics sur l’image elle-même (je garde le clic sur la balise DIV par défaut. Toutefois, elle échoue lorsque l’annonce est un fichier SWF, comme je le pensais.

Existe-t-il une solution de contournement jQuery qui me permettrait de capturer un clic sur un élément Flash avec le DOM?

Si vous avez access à la source du fichier SWF, vous pouvez utiliser ExternalInterface pour communiquer avec la page HTML contenant.

 //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. } 

Je sais que cela a été posté il y a longtemps et que nous y avons déjà répondu, mais je voulais simplement append une solution beaucoup plus simple aux futurs visiteurs du site. Alors que le fichier SWF incorporé avalera l’événement onclick, il n’engloutira pas l’événement onmousedown. L’astuce consiste à définir wmode sur transparent dans les balises param ainsi que dans la balise embed.

 

Vous pouvez utiliser jQuery pour se lier à l’événement mousedown à la place de la manière suivante:

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

J’ai pu prendre Webwires répondre et obtenir un object de travail en utilisant les éléments suivants.

 // 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']); }); } 

J’espère que cela aidera quelqu’un d’autre, merci aux webwires .