Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783

    impedire riproduzione video multipla

    Hola Boys

    in una pagina ho diversi video con struttura html5
    vorrei fare in modo che se uno è avviato non se ne possa avviare un altro contemporaneamente,
    ovvero che si avvii il secondo interrompendo il primo (o tutti).

    qui la struttura html semplificata (mancano i contenitori padre), posso assegnare una classe o un id ai marcatori

    codice:
    <video class="videos" id="video1" poster="video/poster.png" controls >
        <source src="video/video1.mp4" type="video/mp4">
    </video>
    <video class="videos" id="video2" poster="video/poster.png" controls >
        <source src="video/video2.mp4" type="video/mp4">
    </video>

    grazie

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, attraverso un ciclo puoi gestire l'evento "play" di ciascun video in cui esegui, a sua volta, un ciclo di tutti gli elementi per mettere in pausa (metodo pause()) gli altri, o anche giusto quello che risulta in esecuzione.

    Qui un esempio minimo:
    codice HTML:
    <!DOCTYPE HTML>
    <html lang="it">
      <head>
        <title>Esempio</title>
      </head>
      <body>
        <div id="contenitore_player_video">
          <video class="videos" id="video1" poster="video/poster.png" controls >
            <source src="video/video1.mp4" type="video/mp4">
          </video>
          <video class="videos" id="video2" poster="video/poster.png" controls >
            <source src="video/video2.mp4" type="video/mp4">
          </video>
          <video class="videos" id="video3" poster="video/poster.png" controls >
            <source src="video/video3.mp4" type="video/mp4">
          </video>
        </div>
        <script>
          // NodeList degli elementi video
          var elementiVideo = document.querySelectorAll('#contenitore_player_video .videos');
          
          // Ciclo gli elementi
          elementiVideo.forEach(function(el){
            // Gestisco l'evento play per ciascun elemento
            el.addEventListener('play', e => {
              // Questo elemento
              const me = e.currentTarget;
              // Ciclo tutti gli altri e li metto in pausa (se sono in esecuzione)
              elementiVideo.forEach(te => {
                // Esco se è l'elemento corrente o se è già in pausa
                if (me === te || te.paused) return
                // Metto in pausa
                te.pause();
                // Azzero la testina di riproduzione
                //te.currentTime = 0; // <=  Decommenta questo per ottenere un effetto "stop"
              });
            });
          });
        </script>
      </body>
    </html>
    Ultima modifica di KillerWorm; 26-10-2023 a 15:54
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    ottimo!

    per la cronaca informo che non necessita della sequenza
    codice:
    document.querySelectorAll('#contenitore_player_video .videos')
    è sufficiente
    codice:
    document.querySelectorAll('.videos')
    .
    lo preciso perché da me c'è un annidamento diverso, molto più lungo, dall'esempio che ho riportato,
    e vedo che tutto funge bene

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.