【发布时间】:2014-03-12 00:44:13
【问题描述】:
我目前正在使用一个使用 AudioStreamer 框架来控制和流式传输音频的 cordova 插件。我希望在我的应用程序的主要 javascript 代码中拦截从插件的 js 部分发送的回调,例如“pause_success”。当 a 调用插件的 pause 方法时:
[Error] TypeError: 'undefined' is not a function (evaluating 'window.plugins.stream.pause_success()')
global code (index.html, line 1)
我试过了:
window.plugins.stream.pause_success = function(success){
if(success){
alert('success');
}
};
什么都不做
和:
window.plugins.stream.pause_success(function (){
if(success){
alert('success');
}
});
这会导致以下错误
[Error] RangeError: Maximum call stack size exceeded.
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
pause_success (StreamManager.js, line 60)
etc etc
插件端成功回调的代码如下:
StreamManager.prototype.pause_success = function(){
if(this.pause_success){
this.pause_success();
}
}
实际暂停功能如下:
StreamManager.prototype.pause = function(options, success, fail){
this.pause_success = success;
this.pause_error = fail;
cordova.exec(null, null, "Stream", "pause", [options]);
}
有谁知道拦截这些回调的正确方法,还是只是插件方面做得不正确?
插件库可以在这里找到:https://github.com/feedhenry/fh-cordova-plugin-stream
感谢您的宝贵时间。
【问题讨论】:
-
我不知道这个插件,但据我了解和其他插件的工作原理一样,它的作用是调用您在调用动作函数时定义的成功和失败回调函数,所以为什么是否要拦截回调?
-
好吧,例如,当音频成功开始播放时,我希望更新应用程序控件,暂停时同上,当歌曲结束或出错时,我想调用下一首曲目并执行预取操作。这就是为什么我想在我的主应用程序中指定回调行为:)
标签: ios iphone html cordova cordova-plugins