Javascript 使用jQuery和YouTube API加载事件
当我将加载YouTube视频时的回调(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">
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代码>在$()之外。就绪
处理程序。否则,您将为未声明的全局变量赋值。此功能非常糟糕,在严格模式下是禁止的(请参见此处:)。