J'essaie de contrôler les vidéos HTML5 avec JQuery. J'ai deux clips dans une interface à onglets, il y a six onglets au total, les autres n'ont que des images. J'essaie de faire jouer les clips vidéo lorsque vous cliquez sur leur onglet, puis de vous arrêter lorsque vous cliquez sur l'un des autres.
Cela doit être une chose simple à faire, mais je n'arrive pas à le faire fonctionner, le code que j'utilise pour lire la vidéo est le suivant:
$('#playMovie1').click(function(){
$('#movie1').play();
});
J'ai lu que l'élément vidéo doit être exposé dans une fonction pour pouvoir le contrôler, mais ne trouve pas d'exemple. Je suis capable de le faire fonctionner avec JS:
document.getElementById('movie1').play();
Tout conseil serait bon. Merci
Votre solution montre le problème ici - play
n'est pas une fonction jQuery mais une fonction de l'élément DOM. Vous devez donc l'appeler sur l'élément DOM. Vous donnez un exemple de la procédure à suivre avec les fonctions DOM natives. L'équivalent de jQuery - si vous voulez faire cela pour s'intégrer à une sélection existante de jQuery - serait $('#videoId').get(0).play()
. ( get
obtient l'élément DOM natif à partir de la sélection jQuery.)
Voici comment j'ai réussi à le faire fonctionner:
jQuery( document ).ready(function($) {
$('.myHTMLvideo').click(function() {
this.paused ? this.play() : this.pause();
});
});
Tous mes tags HTML5 ont la classe 'myHTMLvideo'
Tu peux faire
$('video').trigger('play');
$('video').trigger('pause');
Pourquoi avez-vous besoin d'utiliser jQuery? La solution que vous proposez fonctionne et est probablement plus rapide que la construction d'un objet jQuery.
document.getElementById('videoId').play();
Pour mettre en pause plusieurs vidéos, j'ai constaté que cela fonctionnait bien:
$("video").each(function(){
$(this).get(0).pause();
});
Cela peut être mis dans une fonction de clic qui est assez pratique.
Dans le prolongement de la réponse de lonesomeday, vous pouvez également utiliser
$('#playMovie1').click(function(){
$('#movie1')[0].play();
});
Notez qu’il n’existe aucune fonction jQuery get () ou eq () appelée. Le tableau de DOM utilisé pour appeler la fonction play (). C'est un raccourci à garder à l'esprit.
J'aime celui la:
$('video').click(function(){
this[this.paused ? 'play' : 'pause']();
});
J'espère que ça aide.
J'utilise FancyBox et jQuery pour intégrer une vidéo. Donnez-lui une identité.
Peut-être pas la meilleure solution ne pourrait jouer/pause différemment - mais facile pour moi et ça marche! :)
Dans le
`
<input type="hidden" id="current_video_playing">
<input type="hidden" id="current_video_status" value="playing">
<video id="video-1523" autobuffer="false" src="movie.mp4"></video>
<script>
// Play Pause with spacebar
$(document).keypress(function(e) {
theVideo = document.getElementById('current_video_playing').value
if (e.which == 32) {
if (document.getElementById('current_video_status').value == 'playing') {
document.getElementById(theVideo).pause();
document.getElementById('current_video_status').value = 'paused'
} else {
document.getElementById('current_video_status').value = 'playing'
document.getElementById(theVideo).play();
}
}
});
</script>`
Ce sont les méthodes faciles que nous pouvons utiliser
sur la fonction de clic sur le bouton jQuery
$("#button").click(function(event){
$('video').trigger('play');
$('video').trigger('pause');
}
Merci
En guise de remarque, assurez-vous que le navigateur prend en charge la fonction vidéo avant d'essayer de l'invoquer:
if($('#movie1')[0].play)
$('#movie1')[0].play();
Cela évitera les erreurs JavaScript sur les navigateurs qui ne prennent pas en charge le tag vidéo.
Par JQuery à l'aide de sélecteurs
$("video_selector").trigger('play');
$("video_selector").trigger('pause');
$("div.video:first").trigger('play');$("div.video:first").trigger('pause');
$("#video_ID").trigger('play');$("#video_ID").trigger('pause');
Par Javascript en utilisant l'ID
video_ID.play(); video_ID.pause();
OR
document.getElementById('video_ID').play(); document.getElementById('video_ID').pause();
enter code here
<form class="md-form" action="#">
<div class="file-field">
<div class="btn btn-primary btn-sm float-left">
<span>Choose files</span>
<input type="file" multiple>
</div>
<div class="file-path-wrapper">
<input class="file-path validate" type="text" placeholder="Upload one or more files">
</div>
</div>
</form>
<video width="320" height="240" id="keerthan"></video>
<button onclick="playVid()" type="button">Play Video</button>
<button onclick="pauseVid()" type="button">Pause Video</button>
<script>
(function localFileVideoPlayer() {
var playSelectedFile = function (event) {
var file = this.files[0]
var type = file.type
var videoNode = document.querySelector('video')
var fileURL = URL.createObjectURL(file)
videoNode.src = fileURL
}
var inputNode = document.querySelector('input')
inputNode.addEventListener('change', playSelectedFile, false)
})()
function playVid() {
keerthan.play();
}
function pauseVid() {
keerthan.pause();
}
</script>
<video style="min-width: 100%; min-height: 100%; " id="vid" width="auto" height="auto" controls autoplay="true" loop="loop" preload="auto" muted="muted">
<source src="video/sample.mp4" type="video/mp4">
<source src="video/sample.ogg" type="video/ogg">
</video>
<script>
$(document).ready(function(){
document.getElementById('vid').play(); });
</script>
Je l'ai aussi fait fonctionner comme ceci:
$(window).scroll(function() {
if($(window).scrollTop() > 0)
document.querySelector('#video').pause();
else
document.querySelector('#video').play();
});
utilisez ceci .. $('#video1').attr({'autoplay':'true'});
@loneSomeday l'a très bien expliqué, voici une solution qui pourrait également vous donner une bonne idée de la fonctionnalité de lecture/pause.