javascript - CoffeeScript - 等效的 JS 代码无法播放嵌入式 Youtube 视频

标签 javascript coffeescript youtube-javascript-api

我正在使用 swfObject 在网站上嵌入 Youtube 视频,以便我可以使用 Youtube Player API 对其进行操作。然而,我正在用 Coffeescript 重写该网站,并陷入了这个问题。

这是 html:

<html>
<head>

<meta charset="UTF-8">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
    <script type="text/javascript" src="js/swfobject.js">//embedding youtube videos</script>
    <script type="text/javascript" src="coffee/test.js"></script>

</head>

<body>
<div id="ytplayer">
    <p>You will need Flash 8 or better to view this content.</p>
</div>
</body>
<script type="text/javascript">
        var params = { allowScriptAccess: "always" };
        swfobject.embedSWF( "http://www.youtube.com/v/yeClJneSNXA&enablejsapi=1&playerapiid=ytplayer", "ytplayer", "425", "365", "8", null, null, params);
</script>
</html>

以下代码有效:

ytplayer = document.getElementById('ytplayer');
ytplayer.playVideo();

但是,等效的(我认为)coffeescript 代码不会:

ytplayer = document.getElementById("ytplayer")
ytplayer.playVideo()

编译为以下 JS:

(function() {
  var ytplayer;

  ytplayer = document.getElementById("ytplayer");

  ytplayer.playVideo();

}).call(this);

Firebug 中出现以下错误:

ytplayer.playVideo is not a function
return ytplayer.playVideo();

最佳答案

这很可能是因为在您尝试播放 YouTube 视频之前 YouTube 播放器尚未完成加载。

试试这个:

window.onYouTubePlayerReady = (playerid) ->
    ytplayer = document.getElementById(playerid)
    ytplayer.playVideo()

这会将您的代码放入 onYouTubePlayerReady callback 中YouTube 用它来让您知道播放器已准备就绪。

我假设 JS 代码有效,因为您在 Firebug 中运行了它?如果是这样,那就有意义了,因为当您在控制台中输入该命令时,YouTube 播放器很可能会被加载。

关于javascript - CoffeeScript - 等效的 JS 代码无法播放嵌入式 Youtube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9165902/

相关文章:

javascript - 获取点击进度条部分的宽度并计算秒数

javascript - 绘图.js : How to avoid overlapping contour lines?

coffeescript - 在 coffeescript 中, "is not"和 "!="有什么区别?

javascript - YouTube API 与 Foundation Modal

javascript - 根据奇数/偶数位置将数组拆分为两个数组

javascript - 在Coffeescript中抽象出两行代码

javascript - YouTube 播放器 API : getDuration(), getCurrentTime()、getVideoData() 不工作

javascript - 相关元素的 CSS 动态定位

javascript - 需要模态形式,从 Mysql 获取所有详细信息并通过 java 脚本在 php 表上显示

javascript - 在 PHP 中发布选项文本而不是值