这里有一个简单的JavaScript程序:桌面浏览器和移动Safari浏览器的封闭处理方式有所不同?
var $d = {};
var AudioPlayer = function(filename, timeUpdateCallback, playbackDone){
// An HTML5 audio player is defined here.
}
$d.AudioPlayer = AudioPlayer;
var AudioManager = function(chapterId){
var audioPlayer;
var me=this;
this.next = function(){
...
}
function playSegment(){
// var path='/test.mp3';
$d.utils.log('Path is: '+path+'');
audioPlayer = new $d.AudioPlayer(path, function(p){} ,
function(){
me.next();
}
);
audioPlayer.play();
}
}
当播放完成回调被称为在桌面浏览器(Safari/Firefox)的一切工作正常。但是,当在iPhone Safari中使用完全相同的JavaScript时,我看到一个异常“找不到变量我”。
为什么封闭处理的方式有所不同?无论如何要解决这个问题吗?
更新:我没有提及audioPlayer依赖于PhoneGap的媒体类;在回调中不接受收盘。问题在于回调以本地代码的形式存储为字符串,所以当它返回时,引用不再存在。 对于我实际使用的桌面浏览器和HTML5音频标签,所以我没有发现这个问题。
你在哪里创建一个AudioManager的实例?什么调用内部函数'playSegment()'? – 2010-09-08 15:16:59