Bonjour,

J'ai une page dans laquelle j'ai intégré une vidéo Dailymotion, et je voudrais déclencher une fonction lorsqu'on lit la vidéo. Pour ça, j'ai essayé le code suivant:

$("object").click(function ()
{
   Mon code
});

Mais rien ne se passe. J'ai essayé de remplacer $("object") par $("p"), et cela marche. Je pense donc que ça vient du fait que le player vidéo soit codé en Flash.

Quelqu'un sait-il comment déclencher un événement au clic sur cet élément?

Merci d'avance.

6 réponses


PhiSyX
Réponse acceptée

Hello, ça devrait t'aider pour dailymotion :

JS : Il faut avoir télécharger SWFObject.

var params = { allowScriptAccess: "always" };
var atts = { id: "mavideoObj" };
// Lien à remplacer 
swfobject.embedSWF("http://www.dailymotion.com/swf/video/VideoID&enableApi=1&playerapiid=dmplayer", "needflash", "425", "356", "9", null, null, params, atts);
function onDailymotionPlayerReady(playerId) {
    mavideoObj = document.getElementById("mavideoObj");
    //mavideoObj.addEventListener("onStateChange", "stateChange");
}
/*
    function stateChange(newState) {
        alert("Nouvel état : " + newState);
    }
*/
function play() {
    if (mavideoObj) mavideoObj.playVideo();
}
function pause() {
    if (mavideoObj) mavideoObj.pauseVideo();
}

HTML : (#needflash: pour afficher la vidéo, sauf si...)
<div id="needflash">Votre version flash n'est pas à jour ou javascript n'est pas activé</div>
<div id="content">
<a href="javascript:void(0);" onclick="play();">Play</a> -
<a href="javascript:void(0);" onclick="pause();">Pause</a>
</div>

Voila voila, il y a *normalement* plus d'explication sur leur site, j'ai plus le lien mais ça doit se trouver ^^

Sinon si ce n'est pas pour Dailymotion mais pour ton application flash, il faut passer par ExternalInterface.call("mafonctionJS", params) (AS3)
Pour detecter un click sur un element, essaye de lui donner l'evenement MouseEvent, voila

Tu as essayé avec embed ?

Oui, rien ne se passe non plus.

A ma connaissance tu ne peux pas détecter les clics sur Flash. En revanche dailymotion met à disposition une API qui doit te permettre de détecter quand on veut lancer la vidéo.

Merci, je crois que je devrais obtenir ce que je veux avec l'event onStateChange. En déclenchant ma fonction quand l'état vaut 1 (playing). Par contre, je ne vois pas à quel objet il faut appliquer l'événement. Par exemple, si c'était sur le embed, je ferais:

$("embed").onstatechange (...)

Mais je suppose que c'est sur autre chose que embed. Faut-il mettre player.onstatechange()?

Doc:

onStateChange

Triggered by a change in the player state. May send one of the following values:

-1: Unstarted is sent when the video is loaded initially

0: ended

1: playing

2: paused

3: buffering is sent when the video begin beffuring

5: and video cued is sent when the video is ready to play

Je ne connais pas du tout l'ActionScript, ni le fonctionnement de Dailymotion, et ton code me fait un peu peur. ^^ Il n'y a pas un moyen simple de détecter le lancement de la vidéo?