8 votes

Suivre un clic sur un film flash (object / embed) avec jQuery

Je suis en train de créer un système de bannière dynamique qui peut gérer les bannières img, ainsi que les bannières flash faites avec object/embed. L'ensemble du site utilise largement jQuery, y compris pour gérer les événements 'click'.

Ce n'est évidemment pas un problème en ce qui concerne le suivi des clics sur l'image elle-même (je suis le clic sur la balise DIV parente). Cependant, cela échoue lorsque la publicité est un SWF, comme je le soupçonnais que ça allait faire.

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

10voto

magnifico Points 113

Je sais que cela a été publié il y a longtemps et déjà répondu, mais je voulais juste ajouter une solution beaucoup plus facile pour les futurs visiteurs du site. Alors que le fichier SWF intégré va absorber l'événement onclick, il n'absorbe pas l'événement onmousedown. Le truc est d'avoir le wmode réglé sur transparent dans les balises param ainsi que dans la balise embed.

Vous pouvez utiliser jQuery pour lier l'événement mousedown de cette manière :

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

3voto

Amarghosh Points 33957

Si vous avez accès à la source du SWF, vous pouvez utiliser ExternalInterface pour communiquer avec la page html contenant.

//à l'intérieur du film flash :
stage.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void
{
   ExternalInterface.call("handleFlashClick", [paramètres pour la méthode]);
}

//javascript dans la page html contenant
function handleFlashClick()
{
  //appeler la méthode jQuery ici.
}

2voto

Kevin Leary Points 919

J'ai pu prendre la réponse de webwires et faire fonctionner un clic sur un objet en utilisant ce qui suit.

// Suivi des événements GA pour le lecteur de podcast
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 là-bas, merci webwires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X