使用JS ES6播放(单击)带有自定义叠加层的wistia视频

时间:2019-09-17 19:05:41

标签: javascript ecmascript-6 onclicklistener wistia

下面是标记

<div class="wistia_responsive_padding" style="padding:56.25% 0 0 0;position:relative;">
  <div class="wistia_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;">
      <div id="play-button-overlay-zwflowymel" class="play-button-overlay d-none d-block">
         <img class="custom-wistia-play-button img-fluid " src="/assets/img/VSL-2019-Thumbnail-01.png" width="942" height="530">
      </div>
      <script src="https://fast.wistia.com/embed/medias/zwflowymel.jsonp" async></script>
      <div id="sp-video_zwflowymel" class="wistia_embed wistia_async_zwflowymel videoFoam=true" style="height:100%;position:relative;width:100%">
         <div class="wistia_swatch" style="height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;">
         </div>
      </div>
   </div>
</div>

下面是我的ES6 JavaScript尝试:

document.addEventListener('DOMContentLoaded', () => {
      loadSVGs();
      document.getElementById("play-button-overlay-zwflowymel").addEventListener('click', () => {
      _wq.push({
      id: 'zwflowymel',
      onReady: function (video) {
      video.play();
    }
   });
   console.log('pressed Play');
  });

控制台没有出现任何错误;但视频仍无法播放。

Wistia API:https://wistia.com/support/developers/player-api似乎只是吹捧要使用的jQuery方法。我只是想使用香草JavaScript Es6来播放带有自定义图像叠加层的视频,

1 个答案:

答案 0 :(得分:1)

尝试在视频加载后 后添加事件监听器。 play方法可以由用户驱动。在您的示例中,您是通过单击来加载视频的,但是由于视频的异步特性,play()方法不会被视为用户交互

引自Wistia文档中的play method section

  

由于此限制,您应该避免在setTimeout回调或其他异步函数(例如XHR或javascript promises)中调用play()。

加载视频可能是一种XHR功能。
在下面尝试此示例,让我知道它是否有效。

document.addEventListener('DOMContentLoaded', () => {
    loadSVGs();
    _wq.push({ id: 'zwflowymel', onReady: function (video) {

        document.getElementById("play-button-overlay-zwflowymel").addEventListener('click', () => {
            video.play();
            console.log('pressed Play');
        });

    }});
});