【发布时间】:2019-04-24 17:56:24
【问题描述】:
我正在开发一个视频播放器项目,我正在使用 videojs 和 videojs-ima 进行广告前贴片广告。
我终于找到了一种方法来判断是否存在广告;但是,我试图返回一个布尔值 true 或 false 以判断何时运行和执行某个代码块。
这是我的代码,它目前无法正常工作。
if (navigator.userAgent.match(/iPhone/i) ||
navigator.userAgent.match(/iPad/i) ||
navigator.userAgent.match(/Android/i)) {
let checkAd = document.querySelectorAll('.ima-ad-container');
let checkAdLoop = setInterval(() => {
for (let i=0; i < checkAd.length; i++) {
if (checkAd[i].style.display == 'none') {
console.log('Ad is NOT playing.');
return false;
} else {
console.log('Ad is playing.');
return true;
// do nothing
}
}
}, 1000);
player.on('touchend', () => {
if (player.paused() && checkAdLoop() == false) {
player.play();
} else if (player.currentTime > 0 && checkAdLoop() == false) {
player.pause();
}
});
$('.vjs-icon-placeholder').on('touchend', () => {
if (player.paused() && checkAdLoop() == false) {
player.play();
} else if (player.currentTime > 0 && checkAdLoop() == false) {
player.pause();
}
});
}
如果有人可以帮助我理解并可以向我解释为什么这不起作用,我会很高兴。我该如何解决这个问题?
我知道我很接近。提前致谢!
【问题讨论】:
-
返回值必须去某处。处理程序的返回值将分配到哪里?它只是不那样工作。间隔函数的返回值被忽略。
-
为什么要返回一个值来决定是否运行某些代码而不是实际运行代码?
-
@VLAZ 好吧,我实际上已经尝试过只运行代码。问题是,我很确定它与
setInternval()功能有关,是我的活动要进行两次。我可以通过点击播放器来播放和暂停视频;但是,它并不流畅,我通常必须在视频播放之前至少点击两次,或者暂停。 -
这听起来像是一个XY问题,那么
标签: javascript jquery video.js google-ima