在使用 VAST播放器播放广告时,我有以下代码。 我正在检查用户是否已经单击以避免现代浏览器中出现的DOM异常。
(function(VASTPlayer) {
'use strict';
var player = new VASTPlayer(document.getElementById(playerID));
player.once('AdStopped', function() {
console.log('Ad finished playback! ' + playerID);
interstitialInstance.close();
});
player.load( << Ad Tag >> ).then(function startAd() {
console.log(player.adDuration + " " + playerID);
var s = document.getElementById(playerID).childNodes[0];
if (s) {
if (!ryads.mouseClick) {
s.muted = true;
} else
s.muted = false;
} else {
console.log("Error while fetching video element!!!");
}
return player.startAd();
}).catch(function(reason) {
console.log('Ad failed to play ' + playerID);
interstitialInstance.close();
setTimeout(function() {
throw reason;
}, 0);
});
}(window.VASTPlayer));
在Jenkins中运行Compress作业时,出现以下错误。
project.js:891:错误-解析错误。之后缺少姓名。算子 })。catch(function(reason){ ^
project.js:892:错误-解析错误。语法错误 console.log('广告无法播放'+ playerID); ^
project.js:896:错误-解析错误。失踪 ;声明前 }(window.VASTPlayer));
答案 0 :(得分:0)
替换此行
(function(VASTPlayer) {
作者
;(function(VASTPlayer) {
否则,当压缩作业试图连接文件时,您的IIFE可能会被认为是文件末尾所包含的代码的参数,而该文件的结尾恰好在此文件之前。
请详细说明一下
player.load( << Ad Tag >>
是吗?那是无效的Javascript。某种JSX方言?还是只是复制/粘贴错误?
答案 1 :(得分:0)
这是yuicompressor的一个众所周知的问题since years。 一个简单的解决方法是提取promise的resolve和拒绝函数,如下所示:
promise.then(successFunction, failureFunction);
function successFunction() {
console.log('success');
}
function failureFunction(err) {
console.error(err);
}