11528 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Comment peut-on savoir en JS si une vidéo YouTube en iframe a été lancée (ou focus si ce n'est pas possible) ou a été finie ?
Si besoin, voici un iframe YouTube : https://jsfiddle.net/exercices/jueyL9rk/ (Ne vous intéressez pas à la vidéo en question !)

Merci !
Modifié par js_html (04 Apr 2021 - 15:53)
Merci pour ta réponse !
Par contre, je crois que l'exemple a un petit problème : tu as remis mon lien avec juste l'HTML.
Ah oui ! autant pour moi Smiley smile

voici le JS :

focus();
var listener = window.addEventListener('blur', function() {
    if (document.activeElement === document.getElementById('iframe')) {
        // clicked
    }
    window.removeEventListener('blur', listener);
});
Euuh...
Je ne vois pas comment détecter avec ça... J'ai essayé de le mettre sur le lien précédent, mais ça ne fait rien (même si je remplace //clicked par une fonction), même si je rajoute ce qui est focus.
Serait-il possible de m'envoyer un jsfiddle avec l'HTML et le JS ?

Merci !
T'es sûr que ça fonctionne ? T'as essayé ?
Moi, ça n'alert jamais ! Je clique sur la vidéo, ça lance, je clique à côté... L'alert ne vient jamais...
Modérateur
Bonjour,

On ne peut pas "voir" avec javascript à l'intérieur d'une iframe quand elle n'est pas du même domaine que la page principale.

Par contre, on peut lancer une video youtube "comme si c'était via une iframe" (EDIT: ou communiquer avec une iframe existante contenant une vidéo youtube) avec "YouTube Player API Reference for iframe Embeds". Voir :
https://developers.google.com/youtube/iframe_api_reference

Et si on fait ça, on peut détecter ce que fait l'utilisateur via les api fournies par youtube.

Un exemple rudimentaire
https://jsfiddle.net/parsimonhi/gcxy10wh/

EDIT: variante avec une iframe youtube pré-existante dans la page
https://jsfiddle.net/parsimonhi/nktp51qg/

Amicalement,
Modifié par parsimonhi (19 Feb 2021 - 18:41)
Bonjour,
Mince, j'ai oublié de remercier, étant donné que je n'arrivais pas à l'adapter.

Je suis désolé !
Merci !
Meilleure solution