我有一个嵌入YouTube视频的脚本。
这是我的剧本
<object width="500" height="375">
<param name="movie"
value="http://www.youtube.com/v/mLDTfRDM_LE?version=3&autohide=1&showinfo=0&enablejsapi=1">
</param>
<param name="allowScriptAccess" value="always">
</param>
<embed src="http://www.youtube.com/v/mLDTfRDM_LE?version=3&autohide=1&autoplay=1&showinfo=0&rel=0&enablejsapi=1"
type="application/x-shockwave-flash"
allowscriptaccess="always"
width="500" height="375">
</embed>
</object>
现在我想检查视频是否已经启动,并根据我想要发出警告:
"Hii video has started"
此问题有类似的链接:https://stackoverflow.com/questions/16215658/checking-whether-an-embedded-youtube-video-has-started
但我有不同的剧本。
答案 0 :(得分:0)
一般的想法是这样的:
1)您需要在<embed>
元素上添加一个id属性 - 这样您就可以收听播放器事件了。你将在下一步中需要它。此示例假定embed id为'myPlayer'
2)在关闭正文之前,在页面上包含此脚本:
<script>
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("myPlayer");
ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}
function onytplayerStateChange(newState) {
if (newState=="1") {
alert("Hii video has started");
}
}
</script>
当玩家加载并准备好时,onYouTubePlayerReady
功能会自动运行;此脚本将在此时设置一个监听器,如果它听到状态更改事件,告诉您视频正在播放,它将执行您想要的警报。
注意一些非常重要的事情。这种方法在IE上经常不一致 - 您可以将其作为属性追加到对象元素:
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
但更好,更好的解决方案是不使用静态嵌入代码,而是使用SWFObject。请遵循以下文档:https://developers.google.com/youtube/js_api_reference#Examples
另一种可能性,如果你使用jQuery,就是tubePlayer插件:http://www.tikku.com/jquery-youtube-tubeplayer-plugin
当然,我最大的建议是根本不使用AS3嵌入,而是使用iFrame:https://developers.google.com/youtube/iframe_api_reference