2017-05-15 28 views
0

私はモバイルで静止画像のヘッダーを使用して、デスクトップで再生したいだけのビデオヘッダーを持っています。私はモバイルでビデオを隠すことができ、うまくいくように見えますが、ビデオはまだバックグラウンドで読み込まれており、ページの読み込みが遅くなっています。モバイルで動画の読み込みを停止するにはどうすればよいですか。モバイルでの動画の読み込みを停止します。

<video id="bgvid" class="hidden-xs ">  
    <source type="video/mp4" src="myvideo.mp4"></source> 
</video> 

<img alt="" style="width: 100%; height: auto;" src="myimage.jpg" class="visible-xs" /> 

答えて

1

あなたはCSSを経由して可視性を設定し、以前のJSコードにしている、あなたはこのような何かを行うことができますと仮定:

  1. data-src属性の代わりに、あなたのsrcを含めます動画要素必要ない場合はロードするsrcはありません。
  2. 可視の場合は、今すぐ新しい値をピックアップして、video要素に​​を呼び出すdata-src
  3. srcにコピーします。

$(
 
    function() { 
 
    var bgv = $('#bgvid'); 
 

 
    if (bgv.is(':visible')) { 
 
     $('source', bgv).each(
 
     function() { 
 
      var el = $(this); 
 
      el.attr('src', el.data('src')); 
 
     } 
 
    ); 
 

 
     bgv[0].load(); 
 
    } 
 
    } 
 
)
.hidden-xs { 
 
    display: none; 
 
} 
 

 
/* dummy criterion for demo purposes */ 
 
@media screen and (min-width: 400px) { 
 
    .hidden-xs { 
 
    display: block; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<video id="bgvid" class="hidden-xs " controls> 
 
    <source type="video/mp4" data-src="https://archive.org/download/UNIVAC-AD-2/UNIVAC2_512kb.mp4"></source> 
 
    <source type="video/ogg" data-src="https://archive.org/download/UNIVAC-AD-2/UNIVAC2.ogv" /> 
 
</video>

それとも、jQueryのなし:

window.addEventListener("load", function() { 
 
    var bgv = document.getElementById("bgvid"); 
 

 
    // what jQuery checks under the hood 
 
    var visible = !!(bgv.offsetWidth || 
 
    bgv.offsetHeight || 
 
    bgv.getClientRects().length); 
 

 
    if (visible) { 
 
    var children = bgv.getElementsByTagName("source"); 
 

 
    for (var i = 0; i < children.length; ++i) { 
 

 
     children[i].src = children[i].getAttribute("data-src"); 
 
    } 
 
    } 
 

 
    bgv.load(); 
 
});
.hidden-xs { 
 
    display: none; 
 
} 
 

 
/* dummy criterion for demo purposes */ 
 

 
@media screen and (min-width: 400px) { 
 
    .hidden-xs { 
 
    display: block; 
 
    } 
 
}
<video id="bgvid" class="hidden-xs " controls> 
 
    <source type="video/mp4" data-src="https://archive.org/download/UNIVAC-AD-2/UNIVAC2_512kb.mp4"></source> 
 
    <source type="video/ogg" data-src="https://archive.org/download/UNIVAC-AD-2/UNIVAC2.ogv" /> 
 
</video>

+0

このソリューションを試してみると、 "src =" –

+0

...の前に "data-"を削除しないとビデオが表示されません。目的を完全に無効にします。 [JavaScriptコンソール]のエラー(https://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-in-different-browsers)?あなたはjQueryがロードされていることを確認していますか? –

+0

私はそれを動作させましたが、jquery呼び出しはページ上に他の問題を引き起こしています。普通のJSでこれを行う方法はありますか? –

0

イメージファイルへのパスに設定<video>poster属性値を。 loadイベントでwindowの条件を確認して、.src<video>をビデオファイルへのパスに設定するかどうかを決定します。

<video poster="myimage.jpg"></video> 

window.onload = function() { 
    if (/* conditions */ window.innerWidth > 480) 
    document.querySelector("video").src = "myvideo.mp4"; 
} 
+0

このソリューションは、常にポスター画像が表示されます。 –

+0

@HarryRobinsobはい、ポスター画像は、ユーザーまたは 'javascript'が動画の再生を開始するまで表示されます。 – guest271314

関連する問題