我有一个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有什么关系。
答案 0 :(得分:0)
您没有将事件对象传递给handleFileSelect
函数。请这样做,看看。
soundInput.addEventListener('change', function(e) {
handleFileSelect(e, type,addSoundToSoundMenu);
}, false);
答案 1 :(得分:0)
感谢您的帮助,我发现了问题,只是为了解决问题所在的问题
var file = this.files[0]; // FileList object
在handleFileSelect函数中。如果handlFileSelect不是事件的直接回调,则“this”不包含文件对象。
没有调试器的编程乐趣......
诅咒你Weinre!