11522 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je suis en train de bosser sur un projet d'écrans d'affichage dynamique dans nos locaux.
Les écrans affichent seulement une page web qui contient un slideshow, dans lequel on affiche des images de fond et du texte, que les utilisateurs ont ajouté.

Ça fonctionne très bien mais je suis en train de bosser sur la possibilité d'y ajouter également des vidéos YouTube.

J'y suis presque, il ne me manque plus qu'un détail à régler du côté de l'affichage : pouvoir, assez facilement, commander via JS la lecture de la vidéo lorsqu'elle s'affiche dans le slideshow.

Je sais que ça se fait avec leur API, leur doc est assez bien renseignée mais j'ai cependant quelques questions là dessus.

J'utilise le célèbre slideshow Slick, qui est bien pratique car on peur faire appel à des event. Dans mon cas, l'idée serait de faire appel à l'événement 'afterChange' (se déclenche après le changement de slide), puis de détecter si le slide actuel est un iFrame et si c'est le cas, placer le curseur de lecture de la vidéo à 0:00 puis lire la vidéo. Cela devrait permettre de pouvoir les lire en boucle, et une par une, au lieu de toutes à la fois...

Mon problème, c'est plutôt l'API de YouTube. Pour l'utiliser, la doc indique une seule possibilité : ajouter un
 <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
    <div id="player"></div>

dans la page. Perso, ça m'embête car je ne sais pas comment je vais pouvoir le gérer dynamiquement, ma page web pouvant avoir zéro, une ou plusieurs vidéos et que je les affiche avec PHP et une requête SQL.

• Je me demandais donc si on pouvait utiliser les fonctions 'player.playVideo()' sur les iFrames de ma page, sans avoir à intégrer le div#player ?
• Je me demandais également à quoi servait le paramètre d'URL 'enablejsapi=1' qu'on peut ajouter dans l'URL d'une vidéo. Il permettrait donc d'activer l'API JS mais quand on utilise la méthode donnée dans la documentation, on en a pas besoin finalement... Aurait-il un quelconque rapport avec le point ci-dessus ?

Merci d'avance pour votre aide, et bonne journée !

Loraga
Modérateur
Bonjour,

dans la doc:

a écrit :
Le constructeur du lecteur vidéo définit les paramètres suivants :

Le premier paramètre spécifie l'élément DOM ou l'id de l'élément HTML où l'API doit insérer la balise <iframe> contenant le lecteur.


Donc on peut soit:
1) Utiliser des ids différents pour chaque video (player1, player2, etc) ça se construit dynamiquement assez facilement.

2) Utiliser directement une référence vers l'élément du DOM, ce qui permet de ne pas utiliser d'id.

Sinon on peut utiliser une iframe déjà existante:

a écrit :

Comme mentionné dans la section Premiers pas, au lieu d'écrire un élément <div> vide sur votre page, qui sera ensuite remplacé par un élément <iframe> du code JavaScript de l'API Player, vous pouvez créer vous-même la balise <iframe>.
Si vous écrivez une balise <iframe>, lors de la construction de l'objet YT.Player, vous n'avez pas besoin de spécifier des valeurs pour les propriétés width et height, qui sont définies comme attributs de la balise <iframe>, ni la propriété videoId, ni les paramètres du lecteur, qui sont définis dans l'URL src
Meilleure solution
Bonjour Kustolovic et merci pour ton aide !

j'ai effectivement complètement loupé ce paragraphe lors de mes lectures... oups !
c'est pourtant très clair, désolé d'avoir ouvert un post pour si peu !