谷歌闭包编译器&&音频事件

时间:2013-12-17 13:34:42

标签: javascript google-closure-compiler google-closure-library

我有以下代码: (没有编译一切正常)

var audio = new Audio("audio.ogg");
goog.events.listen(audio, 'timeupdate', function(e){

ERROR

actual parameter 1 of goog.events.listen does not match formal parameter
>> found   : Audio
>> required: (EventTarget|goog.events.Listenable|null)
>> goog.events.listen(this.audio.singing, 'timeupdate', function(e){

我的外星人

/**
 * @param {string=} src
 * @constructor
 */
var Audio = function(src) {};
Audio.prototype.play = function() {};

我如何编译这样的内部事件? 谢谢

2 个答案:

答案 0 :(得分:1)

你当然应该尝试增加你的外在定义:

goog.require('goog.events.EventTarget');
/**
 * @param {string=} src
 * @constructor
 * @extends {EventTarget}
 */
var Audio = function(src) {};
Audio.prototype.play = function() {};

编辑:

事实证明,您的问题已在Closure Compiler代码库中解决,然后该修复程序被还原。请参阅the changelog here

我在下面重现该提交的相关部分:

/**
* @param {string=} src address of the media resource (a URL)
* @constructor
* @extends {HTMLAudioElement}
* @see http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#the-audio-element
*/
var Audio = function(src) {};

答案 1 :(得分:0)

Closure编译器提供了应该添加到externs列表

的externs

https://github.com/google/closure-compiler/wiki/Externs-For-Common-Libraries

带有Audio API的人称为html5或类似的东西