Я знаю, что .seekTo () работает в Javascript API, но я не могу заставить его работать с API iFrame . Поддерживается ли этот метод? В приведенном ниже коде успешно внедряется видео и успешно завершается консоль log – объект игрока. Я получаю сообщение об ошибке «player.seekTo не является функцией» в консоли.
<script> var tag = document.createElement('script'); tag.src = "http://www.youtube.com/player_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { height: '390', width: '640', videoId: 'u1zgFlCw8Aw' }); } $(window).load(function(){ jQuery('#test').click(function(){ //console.log('test'); console.log(player); player.seekTo(25); return false; }); }); </script> <a href="#" id="test">Test</a>
Есть идеи? Благодаря!
Вот обновленный jsfiddle, используя новый iframe api, который работает
FYI: Если вы используете только встроенный HTML-код iframe, вы можете положить ?start=30
для времени начала
<iframe width="640" height="390" src="//www.youtube.com/embed/p2H5YVfZVFw?start=30" frameborder="0" allowfullscreen></iframe>
Для API вы можете запустить видео в определенное время, как это. Используйте параметр start
function onYouTubePlayerAPIReady() { player = new YT.Player('player', { height: '390', width: '640', videoId: 'p2H5YVfZVFw', playerVars: { 'start': 159, 'autoplay': 1, 'controls': 1 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange, } });
Вы можете только вызвать seekTo
после того, как игрок начал играть или ничего не делает. Проверьте playerStateChange
вызов playerStateChange
:
onStateChange': onPlayerStateChange
Добавить функцию обратного вызова
function onPlayerStateChange(evt) { if (evt.data==1) { // this will seek to a certain point when video starts // but you're better off using 'start' parameter // player.seekTo(22); } }
JsFiddle имеет кнопки внизу, чтобы искать 30, 60, 90 секунд. Он был протестирован со всеми браузерами, которые рифмуются с «rome». Когда он открывается, появляется окно предупреждения для типа функции player.seekTo
. Если это показывает «неопределенный», у вас есть проблема.
Это работает по назначению: http://jsfiddle.net/JbwY4/ (FF 11, Chrome 17).
Убедитесь, что выполнены следующие условия:
player
: <div id="player"></div>
. onload
, $(document).ready
, setTimeout
и т. Д. В противном случае API IFrame не загружается, и код не будет работать. Метод seekTo()
доступен только после события onReady
.
Вот пример, который начинает играть в 100 секунд:
Я верю, что не все javascript-методы были внедрены на iframe api в качестве экспериментального, поэтому я не думаю, что если вы попробуете его, и это не удастся. Однако я не использовал iframe api в деталях.