我有一个vimeo视频,我想在点击一个按钮后3秒播放。我可以通过点击播放视频,但我似乎无法在正确的位置获得setTimeout ...有什么建议吗?
var iframe1 = document.getElementById("prelearn-1");
var player1 = $f(iframe1);
var prelearnBtn = document.getElementById("prelearn-1-btn");
prelearnBtn.addEventListener("click", setTimeout(function(){player1.api("play")}, 3000));
我正在使用vimeo froogaloop API。
答案 0 :(得分:7)
将其包装在函数中 -
prelearnBtn.addEventListener("click", function(){
setTimeout(function(){
player1.api("play");
}, 3000);
});
答案 1 :(得分:1)
setTimeout
函数接受回调函数。只需将代码包装在一个匿名函数中,它就可以工作了。此外,如果您尝试访问iFrame的内容,则可能会遇到跨域问题。
var iframe1 = document.getElementById("prelearn-1");
var player1 = $f(iframe1);
var prelearnBtn = document.getElementById("prelearn-1-btn");
prelearnBtn.addEventListener("click", function(){setTimeout(function(){player1.api("play")}, 3000)});
答案 2 :(得分:0)
AddEventlistener将匿名函数作为第二个参数。所以你需要将setTimeout
包装在匿名函数中。每当click事件发生时,setTimeout代码将触发并播放视频。
prelearnBtn.addEventListener("click", function () {
setTimeout(function () {
player1.api("play")
}, 3000)
}, false);
答案 3 :(得分:0)
ES2015 较短的语法+利用setTimeout
的 3rd参数将使我们的代码更短,更美观,同时保持可读性:
document.querySelector('button').addEventListener("click",() =>
setTimeout(console.log, 1000, "play")
)
<button>Play</button>
为了打印自变量,上面的示例用player1.api
替换了OP的console.log
方法,这说明了代码的工作原理。