我正在编写一个浏览器插件,需要找到一种方法来获取使用JavaScript在YouTube上播放YouTube视频的当前时间。我一直在玩Chrome JavaScript控制台,但没有运气。
Chrome API似乎仅适用于嵌入式视频播放器,而不适用于在youtube.com上播放的视频。我查看的一个选项是在视频的共享部分,它们是“start at:”时间的输入框,其中包含视频的当前时间。我试过在这个输入框上使用.value和.text,它们都返回undefined?有没有人有任何想法?
答案 0 :(得分:43)
ytplayer = document.getElementById("movie_player");
ytplayer.getCurrentTime();
请参阅the api
答案 1 :(得分:11)
取决于你想要的东西
player.getCurrentTime():Number
返回自视频开始播放以来经过的时间(以秒为单位)。
player.getDuration():Number
返回当前播放视频的持续时间(以秒为单位)。注意 getDuration()将返回0,直到加载视频的元数据为止, 通常在视频开始播放后发生。
答案 2 :(得分:6)
最后我发现如何让它在iOS(以及Android)上运行 实际上,如果在移动浏览器上运行,整个youtube js api都会被打破。
YouTube IFrame API中所述的使用new YT.Player
创建播放器解决了问题。
请注意:仅在<iframe>
占位符中创建<div>
适用于移动浏览器。如果您尝试在<iframe>
调用中使用现有的new YT.Player
,如IFrame API中所述,则无效。
创建播放器后,可以使用player.getCurrentTime()
或player.getDuration()
创建player
个实例。
注意:我没有运气这个方法用于获得的球员
player = document.getElementById(...)
(来自@JosephMarikle回答)
只有已创建的player
实例才能在移动浏览器中使用。
有用的链接:
答案 3 :(得分:1)
仅供参考,YouTube播放器有一个新的iframe API: https://developers.google.com/youtube/iframe_api_reference
答案 4 :(得分:1)
答案 5 :(得分:0)
<script>
var yid = document.getElementById("gwd-youtube_1");
var idBox = document.getElementById("box1");
pausing_function = function(event) {
var aa = setInterval(function() {
if (yid.getCurrentTime() > 8.0 && yid.getCurrentTime() < 8.1) {
yid.pause(yid);
idBox.style.opacity = 1;
console.log(yid.getCurrentTime() + "playing")
clearInterval(aa);
yid.removeEventListener("playing", pausing_function);
}
}, 100)
}
yid.addEventListener("playing", pausing_function);
var pausing_function_1 = function() {
if (yid.getCurrentTime() > 8.1) {
console.log(yid.getCurrentTime() + "pause")
// remove the event listener after you paused the playback
yid.removeEventListener("playing", pausing_function);
}
};
</script>
<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>
答案 6 :(得分:0)
您可以在youtube.com
上使用Html5 Video API
var htmlVideoPlayer = document.getElementsByTagName('video')[0];
htmlVideoPlayer.currentTime
注意:由于Iframe是隔离的,因此无法在Youtube Iframe API上使用。您无法访问Youtube IFrame的上下文。