javascript - 这个脚本如何暂停 youtube 视频?

标签 javascript youtube

我注意到了 this userscript (这有充分的理由相当受欢迎)每当我在此选项卡中的视频上按下播放时,就会暂停另一个选项卡上的视频。来源被缩小了,但看起来就是这样 https://github.com/YePpHa/YouTubeCenter/blob/master/src/YouTubeCenter.user.js

我不知道从哪里开始,所以我搜索了所有“暂停”的实例。我以为是第 22801 行,但我不再这么认为了。我也无法理解发生了什么。在控制台中输入 ytcenter._intercomOnPlayer 得到了 undefined。它下方的 8 行 (22809) 显示“ytcenter._intercomOnPlayer”,因此我认为我没有阅读正确的区域。我看到“@grant GM_xmlhttpRequest”。我查看了 firebug 中的网络选项卡,没有看到任何东西,至少没有看到任何相关的东西。

它如何与另一个选项卡通信以暂停视频?

最佳答案

我想这是负责任的:

ytcenter.player.network.pause();

line 22893

我通过 wiki github 链接找到它 https://github.com/YePpHa/YouTubeCenter/wiki/Features#Only_One_Player_Instance_Playing在我寻找“Only_One_Player_Instance_Playing”短语的代码中

当然,选项卡之间也无法相互通信。它必须通过 youtube api 完成...

更新

我们那边有一个新问题。 ytcenter.player.network.pause() 行如何工作?

我无法自己运行代码。有一些错误,我懒得修复它。但我正在遵循 pause 方法。首先,我认为它是 youtube api 的原生功能,但我错了。是line 18600 .里面是另一把 key

intercom.emit("player", {
        action: "pause",
        origin: intercom.origin
      });

这导致更深入的 emit 功能。正如您所猜到的,emit 也不是 youtube API 的原生函数。它调用 _emit 函数和一些事件。 _emitline 10754 上的关键代码.到这里就结束了,里面有一些魔法,包括 localStoragesettimeout。我相信这就是答案。本地存储是共享的,我在途中某处看到了 setInterval 函数。一旦视频暂停,它就会将消息发送到本地存储中,该存储只保留一小段时间。其他选项卡会通过 setInterval 注意到这一点。

关于javascript - 这个脚本如何暂停 youtube 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691369/

相关文章:

javascript - 我可以在函数声明中传递变量吗?

javascript - 哪个 SVG/SMIL DOM 元素具有 `beginElement` 方法?

javascript - 较大对象中的 this.objectName 在执行期间变为未定义

python - 在python脚本中使用youtube-dl仅从youtube视频下载音频

youtube - YouTube 数据 API v3 的 `.../auth/youtube.download` 范围是什么?

javascript - 如何按顺序显示div中的段落和图像?

youtube - YouTube在iPad和iPhone上自动播放

jquery - YouTube 视频和图像在同一个 ColorBox 中?

javascript - 如何在 Javascript 警报弹出窗口中嵌入 Youtube 视频?

javascript - EmberJS 模板组件突然不在页面上呈现