【发布时间】:2013-07-13 00:38:46
【问题描述】:
我有一个在传递参数时没有被调用的 javascript 回调。这是在 jsbin 中工作的,所以有什么理由不能在 phonegap 中工作。这应该很简单。
<input type="file" id="soundInput">
<script type="text/javascript">
var type = 0;
function addSoundToSoundMenu() {
alert("callback success.");
}
var soundInput = document.getElementById('soundInput');
soundInput.addEventListener('change', function(e) {
handleFileSelect(e, type,addSoundToSoundMenu);
}, false);
function handleFileSelect(event, type, cb) {
var file = this.files[0]; // FileList object
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
gotFS(fs,file,type);
}, fail);
}
</script>
上面的例子没有调用handleFileSelect()。它仅在不带任何参数的情况下传递handleFileSelect 时有效。
soundInput.addEventListener('change',handleFileSelect,false);
当然,我将 args 删除到 handleFileSelect() 以使其工作。
有什么我想念的吗?以编程方式创建输入字段是否会改变事件调度程序的处理方式。
还有什么我可以尝试的,也许是关闭的东西?以前有人遇到过这个问题吗?我无法想象它与phoneGap有什么关系。
【问题讨论】:
-
type和addSoundToSoundMenu定义在哪里?而且看起来您传递的参数与为handleFileSelect定义的参数不相符。你得到什么控制台错误?参考错误? -
对不起,我玩了很多次,他们排队。我会解决它的问题。
-
我终于弄明白了,是“this.files[0];”在 handleFileSelect 函数中。如果它不是事件的直接返回变量,这并没有指向任何有用的东西,我的天哪。感谢大家的帮助。
-
我无法回答我自己的问题,所以任何人都可以放心:)
标签: javascript events callback cordova