2011-11-18 55 views
0

但是,我已经设置了一些测试代码,用于在YouTube视频中加载一个测试代码,然后在计划停止视频的链接上添加一个jQuery点击事件当我点击链接时,我得到的错误:未捕获TypeError:对象[对象对象]没有方法'stopVideo'当点击事件被触发时,关于制作YouTube视频的建议

任何人都可以提出我可能会出错哪里呢?

<div id="container"> 
    <a href="#">This is the link</a> 

    <br /><br /> 
    <br /><br /> 

    <div id="player"></div> 
</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); 

     // 3. This function creates an <iframe> (and YouTube player) 
     // after the API code downloads. 
     var player; 
     function onYouTubePlayerAPIReady() { 
      player = new YT.Player('player', { 
      height: '390', 
      width: '640', 
      videoId: 'u1zgFlCw8Aw' 
      }); 
     } 

     function onPlayerReady(event) { 
      event.target.playVideo(); 
     } 

     $(document).ready(function() { 
      $('a').click(function(e) { 
       player.stopVideo(); 
       e.preventDefault(); 
      }); 
     }); 
</script> 

回答

3

您的代码片段按照预期在fiddle中工作。此外,由于postMessage实施方面的限制,YouTube Frame API不会在file:///协议中运行。

我之前创建了一个YouTube API的自定义实现,可在YouTube iframe API: how do I control a iframe player that's already in the HTML?处获得。我通过file:///协议成功执行stopVideo方法。

如果你在网上运行你的代码,我只能想到一个其他的原因:您正在尝试在链接点击之前播放器准备就绪。为了解决这个问题,你的合并功能:

function onPlayerReady(event) { 
     event.target.playVideo(); 
     $('a').click(function(e) { //<--- Binds event to ALL anchors! Are you sure? 
      player.stopVideo(); 
      e.preventDefault(); 
     }); 
    }); 
相关问题