YouTube iframe API changeState未被调用
YouTube iframe API changeState isn't being called
我试图使用YouTube iframe API在视频完成播放后触发事件。包含YouTube视频的iframe与文档一起加载,并在URL中具有enablejsapi=1
参数,如下所示:
<iframe id="myytplayer" src="http://www.youtube.com/v/8mmd_eHYmMY?enablejsapi=1&playerapiid=ytplayer&version=3" allowfullscreen="" frameborder="0"></iframe>
我已经成功地实现了onYouTubeIframeAPIReady
函数,但是我不能在YouTube对象中添加事件侦听器,一旦它准备好了。播放/暂停视频时不显示播放器状态警报。这是我的javascript代码:
function onytplayerStateChange(newState) {
alert("Player's new state: " + newState);
// check player ended
}
function onYouTubeIframeAPIReady() {
alert("ready");
ytplayer = document.getElementById("myytplayer");
ytplayer.addEventListener("onStateChange", onytplayerStateChange);
}
我还必须加载以下资源,以便显示"ready"警报。
<script src="http://www.youtube.com/player_api" type="text/javascript"></script>
我在这里创建了一个jsFiddle
你不能添加一个事件监听器只是DOM元素(你可以在旧的javascript API);使用iframe API,您必须创建一个YT。首先基于DOM元素的播放器对象,然后在那里添加事件侦听器。像这样:
function onYouTubeIframeAPIReady() {
ytplayer = YT.Player("myytplayer", {
events: {
'onStateChange': onPlayerStateChange
}
}
另外,要小心一点加载player_api通过一个脚本标签…没有保证你的onYouTubeIframeAPIReady函数将被定义,当它完全加载。在定义ready函数之前,最好这样做:
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Google Visualization动态调用构造函数
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 调用函数内部的函数
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- Javascript/jQuery中的并行Ajax调用
- YouTube iframe API changeState未被调用