0

我有一个 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有什么关系。

4

2 回答 2

0

感谢您的帮助,我找到了问题,只是为了解决问题所在

var file = this.files[0]; // FileList object

在 handleFileSelect 函数中。如果handlFileSelect 不是事件的直接回调,则“this”不包含文件对象。

哦,没有调试器的编程乐趣……

诅咒你温热!

于 2013-07-13T19:53:06.327 回答
0

您没有将事件对象传递给handleFileSelect函数。请这样做,看看。

soundInput.addEventListener('change', function(e) {
    handleFileSelect(e, type,addSoundToSoundMenu);
}, false); 
于 2013-07-13T00:43:02.097 回答