52 votes

Arrêter une vidéo youtube avec jquery ?

J'ai un slider jquery que j'ai construit, en fait juste trois panneaux qui glissent en appliquant des valeurs CSS négatives à gauche. Cela fonctionne très bien, mais j'ai une vidéo youtube dans un des panneaux qui ne s'arrête pas lorsque je fais glisser. J'ai essayé display:none et Visibility:hidden, ce qui fonctionne dans tous les cas sauf dans IE, mais le son continue dans IE.

Existe-t-il un moyen simple de tuer une vidéo avec jquery ?

0 votes

Je n'utilise pas d'api, seulement le iframe... comment puis-je l'arrêter ?

0 votes

Vérifiez ma solution sur le lien ci-dessous stackoverflow.com/a/32822713/1716053

0 votes

Cette solution simple fonctionne toujours : stackoverflow.com/questions/14136566/

96voto

HeyTiger Points 321

Cette solution est simple, élégante et fonctionne dans tous les navigateurs :

var video = $("#playerid").attr("src");
$("#playerid").attr("src","");
$("#playerid").attr("src",video);

9 votes

Solution géniale, fonctionne parfaitement si cela ne vous dérange pas de réinitialiser la vidéo.

0 votes

Cela a parfaitement fonctionné pour moi. J'ai essayé les autres solutions proposées sur cette page, mais aucune d'entre elles n'a fonctionné en raison d'une incompatibilité entre http et https.

2 votes

Ce qui est étonnant avec cette solution, c'est que je viens de l'utiliser plus de 3 ans après qu'elle ait été suggérée, et qu'elle reste la plus facile à mettre en œuvre.

36voto

cobbal Points 37900

De la Documents de l'API :

player.stopVideo()

donc dans jQuery :

$('#playerID').get(0).stopVideo();

0 votes

Wow, c'est si facile ? Quel serait mon identifiant de joueur ? <objet width="853" height="505"><param name="movie" value=" youtube.com/v/ name="allowFullScreen" value="true"></param><param name="allowcriptaccess" value="always"></param><embed src=" youtube.com/v/JHao-XRMJus&hl=en_US&fs=1&hd=1 " type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="853" height="505"></embed></object>.

2 votes

En fait, ça semble être plus compliqué que je ne le pensais. Il faut avoir flash 8+ et il faut ajouter "&enablejsapi=1" à l'url. Ensuite, il faut déterminer si la fonction doit être appelée sur la balise embed ou sur la balise object.

0 votes

Je n'arrive pas à le faire fonctionner. Pourquoi faut-il utiliser .get(0) dans cet exemple ? Ce qui est également déroutant, c'est que dans l'exemple de code.google.com/apis/youtube/chromeless_example_1.html - les méthodes appelées sur les liens qui contrôlent la vidéo sont <a onclick="stop() ;" href="javascript:void(0) ;">Stop</a>. Il utilise donc "stop() ;" par opposition à "stopVideo() ;". Mais je n'ai pas réussi à faire fonctionner l'un ou l'autre.

21voto

Chris Wheaton Points 141

1. inclure

<script type="text/javascript" src="http://www.youtube.com/player_api"></script>

2.ajouter votre iframe youtube.

<iframe id="player" src="http://www.youtube.com/embed/YOURID?rel=0&wmode=Opaque&enablejsapi=1" frameborder="0"></iframe>

3.temps de magie.

      <script>
            var player;
            function onYouTubePlayerAPIReady() {player = new YT.Player('player');}
            //so on jquery event or whatever call the play or stop on the video.
            //to play player.playVideo();
            //to stop player.stopVideo();
     </script>

3 votes

J'ai essayé cela et l'élément "player.stopVideo()" est revenu comme n'étant pas défini. Que me manque-t-il ?

1 votes

La balise script est-elle incluse et "&enablejsapi=1" est-il ajouté à votre src iframe ?

0 votes

La façon la plus naturelle de fermer le lecteur YouTube semble être d'utiliser l'API YouTube. Parmi les nombreuses réponses publiées, celle-ci fait exactement cela.

17voto

Felix Points 33944

J'ai déjà eu ce problème et la conclusion à laquelle je suis arrivé est que la seule façon d'arrêter une vidéo dans IE est de la supprimer du DOM.

1 votes

Super, et je peux le rajouter d'une manière ou d'une autre ?

0 votes

Vous pouvez essayer var playercopy = $(playerDiv).clone() puis $(playerDiv).remove()

4 votes

@cobbal : Vous pouvez juste faire var $player = $(playerDiv).detach();

8voto

JackSparrow Points 61

J'étais confronté au même problème. Après beaucoup d'alternatives, ce que j'ai fait, c'est de réinitialiser l'embed src="" avec la même URL.

Extraits de code :

  $("#videocontainer").fadeOut(200);<br/>
  $("#videoplayer").attr("src",videoURL);

J'ai pu au moins arrêter la lecture de la vidéo lorsque je la cache :-)

0 votes

Merci ! Cela a fonctionné pour moi, cependant j'avais 10 vidéos, et j'ai reçu une erreur js que videoURL n'était pas défini, donc j'ai changé videoURL en "http/fuu?args" et ciblé un id unique pour chaque iframe vidéo. Ce serait bien de savoir pourquoi videoURL ne fonctionnait pas. Merci encore !

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