0

下面是标注

<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 方法。我只是想在点击时播放具有自定义图像叠加层的视频,使用 vanilla JavaScript Es6,

4

1 回答 1

1

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

引用自 Wistia 文档中的播放方法部分

由于这个限制,您应该避免在 setTimeout 回调或其他异步函数(如 XHR 或 javascript Promise)中调用 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');
        });

    }});
});
于 2019-09-17T19:34:08.070 回答