• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przyciski nawigacyjne do video

Object Storage Arubacloud
+1 głos
299 wizyt
pytanie zadane 1 lutego 2021 w HTML i CSS przez Heoth Początkujący (300 p.)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</head>
<body>
<button onclick="playVid()" type="button">Play Video</button>
<button onclick="pauseVid()" type="button">Pause Video</button><br> 
<script> 
var vid = document.getElementById("myVideo"); 

function playVid() { 
  vid.play(); 
} 

function pauseVid() { 
  vid.pause(); 
} 
</script> 
<header>
  <div class="overlay"></div>
  <video playsinline="playsinline" autoplay="autoplay" muted="muted" loop="loop">
    <source src="https://storage.googleapis.com/coverr-main/mp4/Mt_Baker.mp4" type="video/mp4">
  </video>
  <div class="container h-100">
    <div class="d-flex h-100 text-center align-items-center">
      <div class="w-100 text-white">
        <h1 class="display-3">Video Header</h1>
        <p class="lead mb-0">With HTML5 Video and Bootstrap 4</p>
      </div>
    </div>
  </div>
</header>

<section class="my-5">
  <div class="container">
    <div class="row">
      <div class="col-md-8 mx-auto">
        <p class="mb-0">
          Created by <a href="https://startbootstrap.com">Start Bootstrap</a>
        </p>
      </div>
    </div>
  </div>
</section>
<style>
header {
  position: relative;
  background-color: black;
  height: 75vh;
  min-height: 25rem;
  width: 100%;
  overflow: hidden;
}

header video {
  position: absolute;
  top: 50%;
  left: 50%;
  min-width: 100%;
  min-height: 100%;
  width: auto;
  height: auto;
  z-index: 0;
  -ms-transform: translateX(-50%) translateY(-50%);
  -moz-transform: translateX(-50%) translateY(-50%);
  -webkit-transform: translateX(-50%) translateY(-50%);
  transform: translateX(-50%) translateY(-50%);
}

header .container {
  position: relative;
  z-index: 2;
}

header .overlay {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background-color: black;
  opacity: 0.5;
  z-index: 1;
}

@media (pointer: coarse) and (hover: none) {
  header {
    background: url('https://source.unsplash.com/XT5OInaElMw/1600x900') black no-repeat center center scroll;
  }
  header video {
    display: none;
  }
}
</style>
</body>
</html>

Witam, wstawiłem w tło filmik i chciałbym dodać do tego przyciski nawigacyjne, lecz funkcja x.pause() tak jak inne nie działają ponieważ wyskakuje mi błąd 

Uncaught TypeError: Cannot read property 'pause' of null
    at pauseVid (test.php:23)
    at HTMLButtonElement.onclick (test.php:14)

Ma ktoś pomysł co to może być? Dodam jeszcze że przy video dodanym w ten sposób

<video id="myVideo">
     <source src="">
</video>

Wszystko działa bezproblemowo

2 odpowiedzi

+1 głos
odpowiedź 1 lutego 2021 przez VBService Ekspert (254,490 p.)
wybrane 2 lutego 2021 przez Heoth
 
Najlepsza

Jeżeli kod javascript znajduje się (w trakcie ładowania strony) przed elementem html (w tym przypadku <video>) to document.getElementById("myVideo") wykona się "wcześniej" i dlatego "nie widzi" tego znacznika.

Pierwsze rozwiązanie: jeżeli javascript znajduje się przed tagiem <video> używamy np.: onload

. . .

<button id="video_play" type="button">Play Video</button>
<button id="video_pause" type="button">Pause Video</button><br> 
<script>
  window.onload = () => { 
    const video_tag = document.getElementById("myVideo");
    const button_video_play = document.getElementById("video_play");
    const button_video_pause = document.getElementById("video_pause");

    button_video_play.addEventListener('click', () => {
      video_tag.play(); 
    })

    button_video_pause.addEventListener('click', () => {
      video_tag.pause(); 
    })
  } 
</script> 
<header>
  <div class="overlay"></div>
  <video id="myVideo" playsinline="playsinline" autoplay="autoplay" muted="muted" loop="loop">
    <source src="https://storage.googleapis.com/coverr-main/mp4/Mt_Baker.mp4" type="video/mp4">
  </video>

. . .

Twój kod działa, ale musisz przenieś tag <script> za tag <videowink

. . .

  <button onclick="playVid()" type="button">Play Video</button>
  <button onclick="pauseVid()" type="button">Pause Video</button><br> 
  <header>
    <div class="overlay"></div>
    <video id="myVideo" playsinline="playsinline" autoplay="autoplay" muted="muted" loop="loop">
      <source src="https://storage.googleapis.com/coverr-main/mp4/Mt_Baker.mp4" type="video/mp4">
    </video>
    <script> 
      var vid = document.getElementById("myVideo"); 

      function playVid() { 
        vid.play(); 
      } 

      function pauseVid() { 
        vid.pause(); 
      } 
    </script> 

. . .

window.onload ] [ Window: DOMContentLoaded event ]

1
komentarz 1 lutego 2021 przez Heoth Początkujący (300 p.)

Dziękuje, czyli to było powodem przez który mi nie działało laugh

1
komentarz 1 lutego 2021 przez VBService Ekspert (254,490 p.)

Przeglądarka jak "natrafia" w kodzie na kod javascript zaczyna go wykonywać po mimo faktu, że jeszcze reszta kodu html się "ładuje" wink

2
komentarz 1 lutego 2021 przez niezalogowany

smiley

Pięknie i Czysto wytłumaczone !

 

yes

0 głosów
odpowiedź 1 lutego 2021 przez xnerwo Gaduła (3,270 p.)

Hej, jeżeli dobrze zrozumiałem to nie działały Ci funkcje do włączania i wyłączania video. Ponieżej przerobiłem Twój kod i mi działa chociaż nie jest to kod najwyższej jakości to działa :) 

 

TUTAJ KOD - JSFiddle

komentarz 1 lutego 2021 przez Heoth Początkujący (300 p.)
A dałoby radę zrobić to bez jQuery?
1
komentarz 1 lutego 2021 przez xnerwo Gaduła (3,270 p.)

Sprawdź to rozwiązanie KOD - JSFiddle

komentarz 1 lutego 2021 przez Heoth Początkujący (300 p.)
Dziękuje bardzo <3
komentarz 1 lutego 2021 przez Heoth Początkujący (300 p.)

Powiedz mi jeszcze skopiowałem ten kod w taki sposób 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  </head>
  <body>
      <script>
        let videoTag = document.getElementById('myVideo');

        const playVideo = () => {
	        videoTag.play();
        };

        const stopVideo = () => {
	        videoTag.pause();
        };

      </script>
    <button onclick="playVideo()" type="button" id="btnPlay">Play Video</button>
    <button onclick="stopVideo()" type="button" id="btnStop">Pause Video</button><br>
   
    <header>
      <div class="overlay"></div>
      <video id="myVideo" playsinline="playsinline" autoplay="autoplay" muted="muted" loop="loop">
        <source src="https://storage.googleapis.com/coverr-main/mp4/Mt_Baker.mp4" type="video/mp4">
      </video>
      <div class="container h-100">
        <div class="d-flex h-100 text-center align-items-center">
          <div class="w-100 text-white">
            <h1 class="display-3">Video Header</h1>
            <p class="lead mb-0">With HTML5 Video and Bootstrap 4</p>
          </div>
        </div>
      </div>
    </header>

    <section class="my-5">
      <div class="container">
        <div class="row">
          <div class="col-md-8 mx-auto">
            <p class="mb-0">
              Created by <a href="https://startbootstrap.com">Start Bootstrap</a>
            </p>
          </div>
        </div>
      </div>
    </section>
    <style>
        
      header {
        position: relative;
        background-color: black;
        height: 75vh;
        min-height: 25rem;
        width: 100%;
        overflow: hidden;
      }

      header video {
        position: absolute;
        top: 50%;
        left: 50%;
        min-width: 100%;
        min-height: 100%;
        width: auto;
        height: auto;
        z-index: 0;
        -ms-transform: translateX(-50%) translateY(-50%);
        -moz-transform: translateX(-50%) translateY(-50%);
        -webkit-transform: translateX(-50%) translateY(-50%);
        transform: translateX(-50%) translateY(-50%);
      }

      header .container {
        position: relative;
        z-index: 2;
      }

      header .overlay {
        position: absolute;
        top: 0;
        left: 0;
        height: 100%;
        width: 100%;
        background-color: black;
        opacity: 0.5;
        z-index: 1;
      }

      @media (pointer: coarse) and (hover: none) {
        header {
          background: url('https://source.unsplash.com/XT5OInaElMw/1600x900') black no-repeat center center scroll;
        }

        header video {
          display: none;
        }
      }

    </style>
  </body>

</html>

i mi nadal pokazuje ten błąd, co ja zrobiłem źle indecision

Podobne pytania

+1 głos
1 odpowiedź 463 wizyt
pytanie zadane 30 października 2020 w HTML i CSS przez seba7013 Nowicjusz (130 p.)
0 głosów
0 odpowiedzi 182 wizyt
pytanie zadane 12 sierpnia 2020 w HTML i CSS przez kingkushlee Gaduła (3,960 p.)
+1 głos
2 odpowiedzi 324 wizyt

92,662 zapytań

141,557 odpowiedzi

320,002 komentarzy

62,029 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...