YouTube iFrame API.seekTo()不是一个方法
YouTube iFrame API .seekTo() not a method?
我知道.seekTo()在Javascript API中工作,但我无法让它与iFrameAPI一起工作。是否支持此方法?下面的代码成功地嵌入了视频,并成功地控制了播放器对象。我在控制台中收到错误"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来工作
仅供参考:如果你只是使用iframe纯HTML嵌入,你可以将?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
回调:
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,铬17)。
确保满足以下条件:
- 定义了一个ID为
player
的容器:<div id="player"></div>
- 代码是而不是延迟的。Ie,不在
onload
事件、$(document).ready
、setTimeout
等内。否则,IFrame API加载失败,代码将无法工作 - jQuery已加载
seekTo()
方法仅在onReady
事件之后可用。
下面是一个在100秒开始播放的例子:
http://jsfiddle.net/9RQK3/
我相信并不是所有的javascript方法都已经在iframe api上实现了,因为它是实验性的,所以如果你尝试了它,但它失败了,我猜不会。然而,我还没有详细使用iframe api。
相关文章:
- 将一个方法转换为promise:Nodejs
- 如何在所有ng点击事件AngularJS上启动一个方法
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 如何创建一个方法来验证数组的范围
- 如何将一个方法延迟到另一个方法首先完成,javascript
- 在Javascript中对类的每个实例调用一个方法
- 如何重写一个方法,并且仍然能够在重写的方法中使用基方法
- NodeJS-从同一文件中的另一个方法调用一个方法
- 有没有任何情况下,一个方法不应该是原型方法
- Jasmine间谍的函数称为一个方法
- 在带有参数列表的表单submit上调用一个方法
- 方法不在另一个方法内部调用
- 在 1 个方法中增加变量值会触发另一个方法的 for 循环,欢迎任何建议
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 如何在javascript中将变量的值分配给另一个方法
- 在浏览器关闭时,单击确认对话框中的“停留在页面上”,执行一个方法
- 使用一个方法在c#中启动其他方法
- 如何在Ember中转换到另一个路由时调用一个方法
- 在typescript中重载一个方法
- 我可以在setInterval函数中放入一个方法作为参数吗