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