YouTube API问题

时间:2011-07-16 16:50:53

标签: api youtube

当用户使用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

我在做什么工作?

谢谢!

3 个答案:

答案 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>

您可以为此值编写任何内容,但您应该更喜欢您拥有的域。