• 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
271 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 (252,740 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 (252,740 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ź 435 wizyt
pytanie zadane 30 października 2020 w HTML i CSS przez seba7013 Nowicjusz (130 p.)
0 głosów
0 odpowiedzi 177 wizyt
pytanie zadane 12 sierpnia 2020 w HTML i CSS przez kingkushlee Gaduła (3,960 p.)
+1 głos
2 odpowiedzi 276 wizyt

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...