不使用 YouTube 更改当前 YouTube 视频时间 API

Change the current YouTube video time without using YouTube API

我正在编写一个 Chrome 扩展(不使用 YouTube 播放器 API 的 iframe 嵌入),我想在其中添加跳转到 YouTube 中某个时间戳的功能视频。所以,我会有一个 HH:MM:SS 格式的时间戳,单击它会使视频时间“搜索”到该时间戳。我找到了一个使用以下代码的答案 here

document.getElementById("movie_player").seekTo(seconds,true);

但是,每当我尝试通过内容脚本注入此代码时,我都会收到此错误:

Error in event handler: TypeError: document.getElementById(...).seekTo is not a function

我也会分享我的代码以进行说明。首先,popup.js:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    chrome.tabs.sendMessage(tabs[0].id, {message: scroll_time}, null);
});

其中 scroll_time 是表示视频时间戳的字符串。在 contentScript 文件中是以下代码:

var sec = parseInt(request.message);
document.getElementById("movie_player").seekTo(sec, true);

我还在 popup.js 文件中尝试了以下代码:

chrome.tabs.query({active: true, currentWindow: true}, tabs => {
    chrome.scripting.executeScript({
            target: {tabId: tabs[0].id},
            files: ['scrollVideo.js'],
    }, ()=>{
            chrome.tabs.sendMessage(tabs[0].id,{scrollTo: scroll_time});
    });
});

在单独的文件中使用以下代码:

chrome.runtime.onMessage.addListener(message=>{
    if (message.scrollTo) {
        scrollVid(message.scrollTo);
    };
});

function scrollVid(time) {
    var sec = parseInt(time);
    document.getElementById("movie_player").seekTo(sec, true);
};

在这两种方法中,我都遇到了上述错误。我希望避免使用 YouTube Player API for iframe Embeds,其中描述了 seekTo 函数。没有 API 有什么办法可以做到这一点,或者使用它是唯一的方法吗?请帮助我,因为这是我希望我的扩展能够做的最后一件事。

我已经在 YouTube 上试过了 window 并且成功了:

document.getElementsByTagName('video')[0].currentTime = 20

我不确定这是否涵盖了您需要的所有内容,或者它是否会按预期工作但希望它能:)