2016-05-24 1 views
1

モーダルウィンドウ内にHTML 5ビデオ要素があります。今私は、モーダルが開かれ、ビデオ要素が自動再生してビデオを再生するかどうかを確認する必要があります。ビデオに属性autoplayがない場合は、ビデオを再生しないでください。HTML5の自動再生属性をターゲットにする方法モーダル内のビデオ要素

http://codepen.io/hennysmafter/pen/YqmLKR

ください上記Codepenでの完全なコードを見てください。

<video id="somevid" controls autoplay loop> 
<source src="http://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4"> 
<source src="http://www.w3schools.com/html/mov_bbb.ogg" type="video/ogg"> 
Your browser does not support HTML5 video. 
</video> 

だから、autoplayをターゲットにし、それがid: popup1 Codepenを参照してください内のvideo要素をターゲットとすべき映像からIDフィールドを使用することはできません必要があります!

$(document).ready(function(){ 
    $('a[data-modal-id]').click(function(e) { 
     e.preventDefault();  
      if ($('.modal-box.opened').find('video').attr(autoplay) == true) { 
       console.log('CLICK: ModalBox if Video Autoplay is true.'); 
      } 
    });    
}); 

問題が上記のコードです。今私はこれが私にただテストのためのログを与えることを知っている。

このコードは、エラーを与える:キャッチされないにReferenceError:自動再生が助けるため、事前に

ありがとう

が定義されていません。私はあなたが自動再生の前後に引用符を忘れてしまったと思います

答えて

2

あなたは、文字列"autoplay"ではなく、変数autoplayを使用している、これにあなたのコードをアップデートしてみてください:

if ($('.modal-box.opened').find('video').attr('autoplay') == true) { 
    console.log('CLICK: ModalBox if Video Autoplay is true.'); 
} 

UPDATE:

が代わりにこれを試してみてください:

if (($('.modal-box.opened').find('video').attr('autoplay') === 'autoplay')) { 
    $('.modal-box.opened').find('video').get(0).play(); 
} 
+0

私に答える時間をとっていただきありがとうございます。あなたのコードでCodepenをフォークしました。それはあなたがそれを見てもらえますか?ありがとうございました。どのように愚かなCodepenを置くことを忘れた:http://codepen.io/hennysmafter/pen/EKqJGe?editors=1010 @illizian – purple11111

+1

@ purple11111申し訳ありません、更新されたコードを試してください:) – Illizian

+0

私はそれが動作すると思います。私はそれを信じることができません...それをもう一度チェックする必要があります。あなたは分でお知らせします... – purple11111

2

は、

if ($('.modal-box.opened').find('video').attr("autoplay") == true) 

のようにまた、それはおそらく、自動再生が財産

EDITであることを知って、小道具(「自動再生」)を使用する必要があります。自動起動あなたがもう一度ビデオを回復しなければならないので、

$(this).get(0)は、目的の要素を返しません:

var video = $('.modal-box.opened').find('video'); 
if (video.prop("autoplay")) { 
    video.get(0).play(); 
} 
+0

感謝を。私は新しいCodepenで両方を試してみてください:http://codepen.io/hennysmafter/pen/MyNRLQ?editors=1010 @ Loscillo – purple11111

+0

私は私の答えを更新しました:) – Limetics

+0

私はIllizianと私の答えに行きました彼はあなたがビデオを復旧しているのと同じことを言っていると信じています。それゆえ、私はあなたの答えを受け入れられたものとして受け入れることはできませんが、私はそれが明らかに価値があるのであなたをアップボートします。さらに、この貧しい古い魂を助けるために時間をとってくれて本当にありがとうと思います。 – purple11111

0

この例を確認してください 私はそれが役に立ちそうです

[1]: https://jsfiddle.net/NbE9d/570/

+0

ありがとうございますが、それはブートストラップモーダルです。私はしかし、コードの一部を取って、それが動作するかどうかを確認しようとします。あなたが望むなら、あなたはCodepenでそれを試すことができます。 – purple11111

1

自動再生が設定されているかどうかを確認するには、次の

var $video = $('.modal-box.opened').find('video'); 

if(typeof $video.attr('autoplay') === "string"){ 
    $video.get(0).play(); 
} 

または自動再生が設定されていないかどうかを確認するために:私を助けるため

if(typeof $video.attr('autoplay') === "undefined"){ 
    //Logic here 
} 
+0

これは非常に有望ですが、私はどこにどのように既存のコードに挿入するか分からないのですか? 完全なIF関数を与えることができますか?そうすれば、はるかに簡単になります。どうもありがとうございました。 – purple11111

+0

私はコードを更新しました。私はそれが助けて欲しい –

+0

ちょっと私はあなたのコードを試して、それは動作しています。 IF/Elseの作業をアイオノープナーにする方法を知ることは本当にうれしいです。私はあなたのものとほぼ同じ答えをすでに受け入れていると言います。私はこれが明らかに彼らの1つであるので、私は正しい答えとしてもっと答えを受け入れることができたかった!私はそれを忘れてしまいますので、私はそれをアップヴォートします。 – purple11111

関連する問題