下面是标记
<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来播放带有自定义图像叠加层的视频,
答案 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');
});
}});
});