我希望youtube播放列表中的视频在达到2:41秒时跳到下一个视频。
它在我单独运行域控件时工作,在我单独执行函数时工作。
它不能一起工作,为什么?我无法通过使用window.location.href
检查域来运行函数。
function generateCount(limit) {
const counterEle = document.querySelector("video");
if (counterEle.currentTime > limit) {
document
.querySelector(
"#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-left-controls > a.ytp-next-button.ytp-button"
)
.click();
setInterval(generateCount, 3000, limit);
}
}
if (
window.location.href ==
"https://www.youtube.com/watch?v=93qE6Z8qheA&list=PL9dIg-VwAsxZdZvuHjzTOP8-49CWpis17&index=5"
) {
generateCount(160.510023);
}
当您第一次运行代码时,您会调用generateCount(160.510023);
函数,该函数会检查视频上的当前时间。如果在页面初始加载时运行此操作,视频播放器的时间将小于160.510023
,因此If语句条件将计算为false
,脚本将完成。相反,请在加载页面时启动间隔计时器,而不是在移动到下一个视频时启动。通过这种方式,您可以为第一个视频重复调用generateCount
,然后它将重复检查当前视频时间:
function generateCount(limit) {
const counterEle = document.querySelector("video");
if (counterEle.currentTime > limit) {
document
.querySelector(
"#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-left-controls > a.ytp-next-button.ytp-button"
)
.click();
}
}
if (window.location.href == "https://www.youtube.com/watch?v=93qE6Z8qheA&list=PL9dIg-VwAsxZdZvuHjzTOP8-49CWpis17&index=5") {
setInterval(generateCount, 3000, 160.510023);
}
由于youtube是一个SPA,即使在重定向到下一个视频后,该代码也会运行。如果你只想在你的第一个视频中运行,你可以在检查url的第一个If语句中正常调用generatetCount()
函数,然后在大约3秒后使用setTimeout()
对generateCount()
进行新的调用排队,如果当前时间小于(或等于(限制,则重新检查当前视频时间:
function generateCount(limit) {
const counterEle = document.querySelector("video");
if (counterEle.currentTime > limit) {
...
} else {
setTimeout(generateCount, 3000, limit);
}
}
if (...) {
generateCount(160.510023);
}