我正在做一个视频播放器项目,我正在使用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();
}
});
}
如果有人能帮助我理解并向我解释为什么这不起作用,我会很高兴的。我该如何着手解决这个问题呢?
我知道我已经很接近了。提前感谢!
发布于 2019-04-25 03:39:32
这是一个经典的XY问题。
试图解决一个与整体情况无关的问题。
下面是可以工作的代码,以及我是如何以不同的方式处理它的。
if (navigator.userAgent.match(/iPhone/i) ||
navigator.userAgent.match(/iPad/i) ||
navigator.userAgent.match(/Android/i)) {
let checkAd = $('.ima-ad-container');
player.on('touchend', () => {
if (checkAd.css('display') != 'none') {
console.log('Ad is playing.');
// do nothing
} else if (checkAd.css('display') == 'none') {
console.log('Ad is NOT playing.');
if (player.paused()) {
player.play();
} else {
player.pause();
}
}
});
$('.vjs-icon-placeholder').on('touchend', () => {
if (checkAd.css('display') != 'none') {
console.log('Ad is playing.');
// do nothing
} else if (checkAd.css('display') == 'none') {
console.log('Ad is NOT playing.');
if (player.paused()) {
player.play();
} else {
player.pause();
}
}
});
}
https://stackoverflow.com/questions/55835948
复制相似问题