【问题标题】:callback not getting called when adding arguments添加参数时未调用回调
【发布时间】: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有什么关系。

【问题讨论】:

  • typeaddSoundToSoundMenu 定义在哪里?而且看起来您传递的参数与为handleFileSelect 定义的参数不相符。你得到什么控制台错误?参考错误?
  • 对不起,我玩了很多次,他们排队。我会解决它的问题。
  • 我终于弄明白了,是“this.files[0];”在 handleFileSelect 函数中。如果它不是事件的直接返回变量,这并没有指向任何有用的东西,我的天哪。感谢大家的帮助。
  • 我无法回答我自己的问题,所以任何人都可以放心:)

标签: javascript events callback cordova


【解决方案1】:

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

soundInput.addEventListener('change', function(e) {
    handleFileSelect(e, type,addSoundToSoundMenu);
}, false); 

【讨论】:

    【解决方案2】:

    感谢帮助,我找到了问题,只是为了关闭问题所在的问题

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

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

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

    诅咒你!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-17
      • 2012-10-25
      • 2017-05-21
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 2015-12-27
      • 2015-06-05
      相关资源
      最近更新 更多