我工作的图像上传应用程序,除了一个错误,这是在Chrome仅发生的一切是伟大的工作。我已经将问题简化为一个未经历的回调。jQuery的.fadeOut回调到。点击不工作
的问题是,.fadeOut回调到。点击()触发不触发。我已经在下面链接的小提琴中重新创建了一个简化版本。第一次点击启动fadeOut,当fadeOut完成时,.click触发器不会发生。再次单击然后触发触发器。任何想法为什么?
HTML:
<div><input type="file" name="image_file" id="image_file"/></div>
<div class="overlay_wrap">
Overlast
</div>
<a id="click" href="">Click</a>
的jQuery:
$(document).ready(function() {
$("#click").click(function(event) {
event.preventDefault();
$('.overlay_wrap').fadeOut(1000, function(event){
$('#image_file').trigger('click');
});
});
});
感谢您的帮助!
编辑:在旧小提琴链接,改变。
不知何故,在回调中放置trigger()似乎推迟了事件的发展,看起来它是Chrome的安全停止事件,可能是因为它认为它不是用户生成的或类似的东西。只要将它从回调中解放出来就可以解决问题,并且使用常规的setTimeout进行测试似乎也有同样的问题,所以它与延迟触发器()有关。有一个答案[** here **](http://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click-event-fire-programmatically-for-a-file-input )处理一个有点类似的问题。 – adeneo 2013-03-04 21:00:43
这是支持什么adeneo说的[另一个答案](http://stackoverflow.com/questions/12134014/how-can-i-programmatically-open-the-file-picker-with-javascript)。 – 2013-03-04 21:11:37
所以没有办法解决这个问题? – 2013-03-04 21:13:59