我正在尝试从默认设置中删除这些playerVar,因为这是不必要的重复操作。
start: 0,
end: 999999,
loop: true,
https://jsfiddle.net/hzyrfkwb/461/
function addVideo(video, settings) {
const defaultSettings = {
width: settings.width || 640,
height: settings.height || 390,
videoId: video.dataset.id,
playerVars: {
start: 0,
end: 999999,
loop: true,
是否有一种方法可以只在需要时添加它们?
如本例所示:
https://jsfiddle.net/hzyrfkwb/432/
这样做会消除很多不必要的重复。
loadPlayer({
target: ".jacketc",
width: 600,
height: 338,
playerVars: {
start: 200,
end: 205,
loop: true
}
});
不需要在顶部和底部都注明:
function addVideo(video, settings) {
const defaultSettings = {
width: settings.width || 640,
height: settings.height || 390,
videoId: video.dataset.id,
playerVars: {
start: 0,
end: 999999,
loop: true
以及底部:
loadPlayer({
target: ".jacketc",
width: 600,
height: 338,
playerVars: {
start: 200,
end: 205,
loop: true
}
});
这些仅应在需要时添加到loadPlayer中。 在默认设置中,不要求它们位于顶部。
start: 0,
end: 999999,
loop: true,
这些应仅是默认设置:
autoplay: 1,
controls: 1,
showinfo: 1,
rel: 0,
iv_load_policy: 3,
cc_load_policy: 0,
fs: 0,
disablekb: 1
};
仅在需要时将它们添加到loadPlayer中。 如果不需要它们,则不需要出现在javascript中。
start: 0,
end: 999999,
loop: true,
如何对代码进行这种调整?
https://jsfiddle.net/hzyrfkwb/453/
在默认设置中不需要这些playerVar的地方。 仅在需要时将它们添加到loadPlayer。
start: 200,
end: 205,
loop: true,
这正是其他代码中的工作方式。
https://jsfiddle.net/hzyrfkwb/465/
我将如何在新的更新代码中实现它?
答案 0 :(得分:1)
我不太了解您的问题,但是据我了解,您想在函数playerVars
中任选地设置addVideo()
,但又不想将playerVars
定义为输入变量?也许你可以试试这个
["start", "end", "loop"].forEach(function (a) {
if (settings[a]) {
defaultSettings.playerVars[a] = settings[a];
}
});
// or
for (let a of ["start", "end", "loop"]) {
if (settings[a]) defaultSettings.playerVars[a] = settings[a];
}
// or
let optional = ["start", "end", "loop"];
for (let i = 0; i < optional.length; i++) {
if (settings[optional[i]]) {
defaultSettings.playerVars[optional[i]] = settings[optional[i]];
}
}
完整代码
function addVideo(video, settings) {
const defaultSettings = {
width: settings.width || 640,
height: settings.height || 390,
videoId: video.dataset.id,
playerVars: {
autoplay: 1,
controls: 1,
showinfo: 1,
rel: 0,
iv_load_policy: 3,
cc_load_policy: 0,
fs: 0,
disablekb: 1
},
events: {
"onReady": onPlayerReady,
"onStateChange": onPlayerStateChange
}
};
["start", "end", "loop"].forEach(function(a) {
if (settings[a]) defaultSettings.playerVars[a] = settings[a];
});
const updatedSettings = combineSettings(defaultSettings, settings);
console.log(updatedSettings)
players.push(new YT.Player(video, updatedSettings));
}