youtube iframe api loadVideoById()错误

phe*_*sta 7 iframe youtube-api

我将youtube视频添加到公司网站,并希望它们显示在非闪存设备上.我一直在使用youtube iframe API并更新其中一个示例,以允许用户点击链接以更改iframe中的视频.编辑后的代码是:

<!DOCTYPE HTML>
<html>
<body>
<div id="player"></div>
<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 done = false;
var player;
function onYouTubePlayerAPIReady() {
    player = new YT.Player('player', {
      height: '390',
      width: '640',
      videoId: 'JW5meKfy3fY',
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange
      }
    });
}
function onPlayerReady(evt) {
    evt.target.playVideo();
}
function onPlayerStateChange(evt) {
    if (evt.data == YT.PlayerState.PLAYING && !done) {
        setTimeout(stopVideo, 6000);
        done = true;
    }
}
function stopVideo() {
    player.stopVideo();
}

function loadVideo(videoID) {
  if(player) { player.loadVideoById(videoID); }
}

</script>

<a href="javascript:loadVideo('kGIjetX6TBk');">Click me to change video</a>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我唯一补充的是:

function loadVideo(videoID) {
  if(player) { player.loadVideoById(videoID); }
}
Run Code Online (Sandbox Code Playgroud)

这在Safari,Chrome和Firefox中工作正常,但在IE7,8或9中不起作用.在IE7和8中,它返回错误"对象不支持此属性或方法".

这是API的问题还是我做错了什么?

pvo*_*ers 6

我遇到了类似的问题,事实证明,只要尚未调用,就不应该调用YT.Player对象(包括loadVideoById)上的任何方法onPlayerReady.

进行检查if(player) {...}是不够的,Player将创建对象,并且在没有您需要的方法的情况下,某些属性已经可用.

  • 解决了它.`... events:{'onReady':function(){...}` (4认同)