Ответ 1
ytplayer = document.getElementById("movie_player");
ytplayer.getCurrentTime();
Смотрите api
Я пишу плагин для браузера и должен найти способ получить текущее время воспроизведения YouTube на YouTube с помощью JavaScript. Я играю в консоли Chrome JavaScript и не имел никакой удачи.
Похоже, что хром API работает только со встроенными видеоплеерами, а не с видео, которое воспроизводится на youtube.com. Один из вариантов, который я рассмотрел, - это раздел разделов видео, который является полем ввода для времени "start at:", которое содержит текущее время видео. Я попытался использовать .value и .text в этом поле ввода, и оба они возвращают undefined? У кого-нибудь есть идеи?
ytplayer = document.getElementById("movie_player");
ytplayer.getCurrentTime();
Смотрите api
Зависит от того, что вы хотите
player.getCurrentTime():Number
Возвращает прошедшее время в секундах с момента начала воспроизведения видео.
player.getDuration():Number
Возвращает продолжительность в секундах воспроизводимого в данный момент видео. Заметка что getDuration() вернет 0 до загрузки метаданных видео, который обычно происходит сразу после начала воспроизведения видео.
Наконец-то я нашел, как заставить его работать на iOS (и на Android тоже).
На самом деле, весь YouTube API был сломан для меня, если запустить на мобильном браузере.
Проблема решена путем создания плеера с использованием new YT.Player
как описано в YouTube IFrame API.
Обратите внимание: в настоящий момент для мобильных браузеров работает только создание метки <iframe>
из <div>
. Если вы попытаетесь использовать существующий <iframe>
в new YT.Player
вызове new YT.Player
, как упомянуто в IFrame API, это не будет работать.
После создания игрока можно использовать player.getCurrentTime()
или player.getDuration()
с созданным экземпляром player
.
Примечание: мне не повезло, вызывая этот метод на игроке, полученном с player = document.getElementById(...)
(из ответа @JosephMarikle).
В мобильных браузерах работал только созданный экземпляр player
.
Полезные ссылки:
Только FYI. Для проигрывателя YouTube существует новый API iframe: https://developers.google.com/youtube/iframe_api_reference
<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>
Вы можете использовать Html5 Video API на youtube.com
var htmlVideoPlayer = document.getElementsByTagName('video')[0];
htmlVideoPlayer.currentTime
Примечание: он не будет работать на API Iframe Youtube, потому что Iframes изолированы. Вы не можете получить доступ к контексту IFrame Youtube.