Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery和YouTube API加载事件_Javascript_Jquery_Youtube Api_Jquery Events - Fatal编程技术网

Javascript 使用jQuery和YouTube API加载事件

Javascript 使用jQuery和YouTube API加载事件,javascript,jquery,youtube-api,jquery-events,Javascript,Jquery,Youtube Api,Jquery Events,当我将加载YouTube视频时的回调(onYouTubePlayerReady)放在jQuery ready函数中时,在加载视频时不会调用它。但是,当我将回调放在jqueryready函数之外时,它被调用。如何修复它,以便将回调放入jQuery函数中。代码如下 <html> <body> <script type="text/javascript" src="https://www.google.com/jsapi">

当我将加载YouTube视频时的回调(
onYouTubePlayerReady
)放在jQuery ready函数中时,在加载视频时不会调用它。但是,当我将回调放在jqueryready函数之外时,它被调用。如何修复它,以便将回调放入jQuery函数中。代码如下

<html>
<body>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}swfobject.js"></script>    

<script type="text/javascript">

  /// --> When I put onYouTubePlayerReady here it IS called  //
  function onYouTubePlayerReady(playerId) {
      ytplayer = document.getElementById("myytplayer");
      ytplayer.playVideo();
  }

  $(document).ready(function(){
      
       /// --> When I put onYouTubePlayerReady here it is NOT called //

       var params = { allowScriptAccess: "always" };
       var atts = { id: "myytplayer" };
       swfobject.embedSWF("http://www.youtube.com/v/UkhisRY3RRQ?version=3&enablejsapi=1","ytapiplayer", "800", "500", "8", null, null, params, atts);
});

</script>

   <div id="ytapiplayer">
       You need Flash player 8+ and JavaScript enabled to view this video.
   </div>
</body>
</html>

///-->当我在这里放置onyouteplayer时,它被称为//
函数onYouTubePlayerReady(playerId){
ytplayer=document.getElementById(“myytplayer”);
ytplayer.playVideo();
}
$(文档).ready(函数(){
///-->当我在这里放置onyouteplayerready时,它不被称为//
var params={allowScriptAccess:“始终”};
var atts={id:“myytplayer”};
swfobject.embeddeswf(“http://www.youtube.com/v/UkhisRY3RRQ?version=3&enablejsapi=1“,”ytapiplayer“,”800“,”500“,”8“,”空、空、参数、atts);
});
您需要启用Flash player 8+和JavaScript才能查看此视频。

此外,这里是swfobject的url,以防它有所帮助。

您必须让它在全球范围内可用-如果您将它放在就绪处理程序中,它的作用域就是该处理程序。你为什么需要它?您需要访问范围吗?您可以试试这个,但我不确定它是否适合您-这取决于YouTubeplyer引用指针关联何时建立:

<html>
<body>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}swfobject.js"></script>    

<script type="text/javascript">

  $(document).ready(function(){

      onYouTubePlayerReady = function(playerId) {
          ytplayer = document.getElementById("myytplayer");
          ytplayer.playVideo();
      }

       var params = { allowScriptAccess: "always" };
       var atts = { id: "myytplayer" };
       swfobject.embedSWF("http://www.youtube.com/v/UkhisRY3RRQ?version=3&enablejsapi=1","ytapiplayer", "800", "500", "8", null, null, params, atts);
});

</script>

   <div id="ytapiplayer">
       You need Flash player 8+ and JavaScript enabled to view this video.
   </div>
</body>
</html>

$(文档).ready(函数(){
onYouTubePlayerReady=函数(playerId){
ytplayer=document.getElementById(“myytplayer”);
ytplayer.playVideo();
}
var params={allowScriptAccess:“始终”};
var atts={id:“myytplayer”};
swfobject.embeddeswf(“http://www.youtube.com/v/UkhisRY3RRQ?version=3&enablejsapi=1“,”ytapiplayer“,”800“,”500“,”8“,”空、空、参数、atts);
});
您需要启用Flash player 8+和JavaScript才能查看此视频。

成功了!我希望onYouTubePlayerReady处于就绪状态,这样我就可以从它内部执行jQuery操作。我很好奇为什么它会起作用。您所说的“这取决于YouTubeplyer引用指针关联何时建立”是什么意思?它之所以有效,是因为我们将该函数分配给了一个全局变量“onYouTubePlayerReady”——YT API连接到的全局变量。(在您拥有私有函数之前,ready处理程序之外的任何对象都不能作为目标)。-我担心YT API可能会在分配全局“onYouTubPlayerReady”变量之前将指针设置为该变量,这可能会出现问题。很高兴它成功了。要么使用
window.onYouTubePlayerReady=…
,要么添加
var-onYouTubePlayerReader
$()之外。就绪
处理程序。否则,您将为未声明的全局变量赋值。此功能非常糟糕,在严格模式下是禁止的(请参见此处:)。