Javascript 获取当前YouTube视频时间

Javascript 获取当前YouTube视频时间,javascript,youtube,Javascript,Youtube,我正在编写一个浏览器插件,需要找到一种方法来获取使用JavaScript在YouTube上播放的YouTube视频的当前时间。我一直在Chrome JavaScript控制台上玩,没有任何运气 ChromeAPI似乎只适用于嵌入式视频播放器,而不是在youtube.com上播放的视频。我研究的一个选项是在视频的共享部分,它是一个“开始时间:”的输入框,其中包含视频的当前时间。我尝试在这个输入框中使用.value和.text,它们都返回未定义的?有人有什么想法吗 ytplayer = docume

我正在编写一个浏览器插件,需要找到一种方法来获取使用JavaScript在YouTube上播放的YouTube视频的当前时间。我一直在Chrome JavaScript控制台上玩,没有任何运气

ChromeAPI似乎只适用于嵌入式视频播放器,而不是在youtube.com上播放的视频。我研究的一个选项是在视频的共享部分,它是一个“开始时间:”的输入框,其中包含视频的当前时间。我尝试在这个输入框中使用.value和.text,它们都返回未定义的?有人有什么想法吗

ytplayer = document.getElementById("movie_player");
ytplayer.getCurrentTime();


更新:如果不起作用,也可以尝试
player.playerInfo.currentTime
()

取决于您想要什么

player.getCurrentTime():Number
返回自视频开始播放以来经过的时间(秒)

返回当前播放视频的持续时间(秒)。注 在加载视频元数据之前,getDuration()将返回0, 这通常发生在视频开始播放之后


仅供参考,YouTube播放器有一个新的iframe API:

我终于找到了如何让它在iOS(以及Android)上运行的方法。
事实上,如果在手机浏览器上运行的话,整个系统对我来说已经崩溃了

如中所述,通过使用新的YT.player创建播放器解决了问题

请注意:仅从
创建
占位符适用于当时的移动浏览器。如果您尝试在
新的YT.Player
调用中使用现有的
,如IFrame API中所述,这将不起作用。

创建播放器后,可以使用
player.getCurrentTime()
player.getDuration()
创建
player
实例

注意:我没有运气在使用
player=document.getElementById(…)
(来自@JosephMarikle-answer)。
仅创建的
player
实例在移动浏览器中工作


有用链接:

在特定时间停止youtube视频并在GWD中显示通知框

var yid=document.getElementById(“gwd-youtube_1”);
var idBox=document.getElementById(“box1”);
暂停函数=函数(事件){
var aa=setInterval(函数(){
if(yid.getCurrentTime()>8.0&&yid.getCurrentTime()<8.1){
yid.暂停(yid);
idBox.style.opacity=1;
console.log(yid.getCurrentTime()+“播放”)
净距(aa);
yid.removeEventListener(“播放”,暂停功能);
}
}, 100)
}
yid.addEventListener(“播放”,暂停功能);
var pausing_function_1=function(){
if(yid.getCurrentTime()>8.1){
console.log(yid.getCurrentTime()+“暂停”)
//暂停播放后删除事件侦听器
yid.removeEventListener(“播放”,暂停功能);
}
};    
播放视频和隐藏通知

window.gwd=window.gwd |{};
gwd.pauseVideo=函数(事件){
var idBox=document.getElementById(“box1”);
idBox.style.opacity=0;
};
//Google Web Designer中事件处理的支持代码
//此脚本块是自动生成的。请不要编辑!
gwd.actions.events.registerEventHandlers=函数(事件){
gwd.actions.events.addHandler('gwd-youtube_1','playing',gwd.pauseVideo,false);
};
gwd.actions.events.deregisterEventHandlers=函数(事件){
gwd.actions.events.removeHandler('gwd-youtube_1','playing',gwd.pauseVideo,false);
};
document.addEventListener(“DOMContentLoaded”,gwd.actions.events.RegisterEventHandler);
document.addEventListener(“卸载”,gwd.actions.events.Deregistereventhandler);
您可以在youtube.com上使用

var htmlVideoPlayer = document.getElementsByTagName('video')[0];
htmlVideoPlayer.currentTime
注意:它在Youtube Iframe API上不起作用,因为Iframe是孤立的。您无法访问Youtube IFrame的上下文。

在2020年,此功能可以:

player.playerInfo.currentTime
完整代码:

谢谢。我还没有弄清楚文档。getElementById(“电影播放器”);。我想:)我只知道它,因为我试过一次,并且在想我知道这个。。。我又是怎么做到的?XDIt在iOS上不工作(在9.2上检查)<代码>玩家var没有必要的方法。即使使用IFrame API与
new YT.Player()
@zxcat一起创建,您是否确保在引用视频时包含
enablejsapi
@约瑟夫玛丽克尔,当然。我被呼叫到
onyoutubeiplayerapiready
onyoutubeiframeapirey
,看到我的
播放器已更改。但在iOS上,它没有控制自己的方法。
 <script type="text/javascript" gwd-events="handlers">
    window.gwd = window.gwd || {};
    gwd.pauseVideo = function(event) {
      var idBox = document.getElementById("box1");
      idBox.style.opacity = 0;
    };
  </script>
  <script type="text/javascript" gwd-events="registration">
    // Support code for event handling in Google Web Designer
     // This script block is auto-generated. Please do not edit!
    gwd.actions.events.registerEventHandlers = function(event) {
      gwd.actions.events.addHandler('gwd-youtube_1', 'playing', gwd.pauseVideo, false);
    };
    gwd.actions.events.deregisterEventHandlers = function(event) {
      gwd.actions.events.removeHandler('gwd-youtube_1', 'playing', gwd.pauseVideo, false);
    };
    document.addEventListener("DOMContentLoaded", gwd.actions.events.registerEventHandlers);
    document.addEventListener("unload", gwd.actions.events.deregisterEventHandlers);
  </script>
var htmlVideoPlayer = document.getElementsByTagName('video')[0];
htmlVideoPlayer.currentTime
player.playerInfo.currentTime