いろいろと勘違いされています。
まず、aタグについてです。
href属性でurlが設定されている以上、クリックすればそのページを開きにいきます。
今回の場合は movie/test.mp4 にページ遷移するので現在のページの処理は無視されます。
開いている現在のページで映像を表示させるようにするなら、この書き方ではダメです。
次にjQueryについてです。
Javascript
1$(function(){
2 $(document).on('click', '.swiper-slide a',function(){
3 $('video').prop('muted',true); //ここがvideoタグに消音を指定している
4
5 });
6});
jqueryの書き方自体に問題はありませんが、消音を指定するvideoタグがHTMLのどこにもありません。
その為、あらかじめvideoタグを挿入した後にこのコードを実行する必要があります。
こんな感じでどうでしょう
HTML
1<div class="swiper-slide">
2 <a data-lity="data-lity"> <!-- リンクであるhrefは消します -->
3 <img src="img/slider/test.png">
4 </a>
5</div>
Javascript
1$(function(){
2 $('.swiper-slide a').on('click',function(){
3 $(this).after('<video controls autoplay>'); //videoタグをaタグの次に追加
4 $('video').append('<source src="movie/test.mp4">'); //videoタグの中にsourceタグを追加
5 $('video').prop('muted',true); //追加した
6 });
7});
20200817修正、lity.js が使用されている前提
lity.jsを詳しくは知りませんが、画面に挿入される動画は iframe によって表示されます。
なので iframe の中に存在する video 要素に対して消音を設定する必要があります。
その際に前提として、iframe の中の要素を操作する場合、
iframe で開かれるファイルが同じサーバー上に存在していなければならないので注意してください。
いろいろサイトを調べてみるとlity.jsに限らず、
videoの自動再生についてはブラウザによってかなり挙動が怪しいようです。
IE11については場合によってはあきらめた方がいいかもしれません…。
少なくとも自分では解決できそうにないです。
それではコードです。
Javascript
1$(function(){
2 $('.swiper-slide a').on('click',function(){
3 setTimeout(function(){
4 $('iframe').contents().find('video').get(0).muted = true;
5 /*
6 $('iframe').contents().find('video').get(0).play();
7 $('iframe').contents().find('video').get(0).pause();
8 $('iframe').contents().find('video').get(0).currentTime = 0;
9 setTimeout(function(){ $('iframe').contents().find('video').get(0).play(); },500);
10 */
11 },1000);
12 });
13});
とりあえずこれが正しいやり方とは思いませんが、
aタグをクリックしてすぐはまだvideo要素が追加されていません。
その為、iframeとvideoが出力されるのを setTimeout関数を使って待ちます。
この例では 1000ms 待たせています。
もし、消音を実行しても症状が改善されなかった場合、
コメントアウトを解除して追加の4行も実行させてみてください。
こちらではコメントアウトを解除すると…
- ミュートにする
- 再生する
- 一時停止する
- 再生時間を初期化
- 500ms後に再生する
が実行されます。
Javascript側からの命令で動画を動かしてみる、ということですね。
こちらで上手くいかないとなると、申し訳ないですが自分はお手上げです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/16 05:31 編集
2020/08/17 05:24
2020/08/17 08:12