当用户使用YouTube的API点击YouTube视频上的“播放”时,我正尝试做一些事情:
<script type="text/javascript">
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
alert('not cool')
if (event.data == YT.PlayerState.PLAYING) {
alert('cool');
}
}
</script>
<iframe id="player" width="970" height="582" src="http://www.youtube.com/embed/6oE-NlWHVuQ?enablejsapi=1" frameborder="0" allowfullscreen></iframe>
它给出错误:
指定了无效或非法的字符串“code:”12
我在做什么工作?
谢谢!
答案 0 :(得分:1)
问题解决了:)似乎它在localhost上不起作用。
答案 1 :(得分:0)
您显示的代码也适用于localhost,可能是您嵌入的视频有问题或视频已禁用嵌入属性。
答案 2 :(得分:0)
只要您将"origin"
参数添加到src
,它就可以在localhost上运行。
如果您确实编写了标记,那么在构造YT.Player对象时,您不需要指定宽度和高度的值,这些值被指定为标记的属性,或者视频标记和播放器参数,是在src URL中指定的。作为额外的安全措施,您还应该将origin参数包含在URL中,指定URL方案(http://或https://)和主页的完整域作为参数值。虽然origin是可选的,但包括它可防止恶意第三方JavaScript被注入您的页面并劫持您对YouTube播放器的控制。
<iframe ... src="http://www.youtube.com/embed/6oE-NlWHVuQ?enablejsapi=1&origin=http://somewebsite.com" ...></iframe>
您可以为此值编写任何内容,但您应该更喜欢您拥有的域。