我在 Chrome 中打开文件输入类型的文件上传弹出窗口时遇到问题。
正如您在这里看到的:http://jsfiddle.net/cavax/K99gg/3/ ,单击元素可以触发文件输入的单击,但例如悬停元素不会触发输入的单击。
$('#test').on('click', function(){
$('#upload').trigger('click');
});
$('#test').on('mouseenter', function(){
$('#upload').trigger('click');
});
在现实生活中,我遇到了这个麻烦,因为在网络应用程序中,我正在加载抛出ajax,内容女巫在输入文件中。 加载结束时,必须打开弹出文件,但无法在 Chrome 上实现此功能(在 FF 上工作)。
我猜想的问题是该操作不是由鼠标单击(悬停、超时等)生成的,因此 chrome 不会触发文件上传。
我也尝试过这个:http://jsfiddle.net/cavax/K99gg/7/ ,所以点击该元素,等待然后触发点击,但没有任何反应,因为点击和触发中间有“settimeout”:(
$('#test').on('click', function(){
setTimeout(function(){
$('#upload').trigger('click');
}, 3000);
});
如果删除延迟:http://jsfiddle.net/cavax/K99gg/8/有用 有办法完成这项工作吗?
最佳答案
如果我没记错的话,mouseenter 和 mouseleave 是 IE 特有的事件,而不是标准事件。也许它们被扩展了,但不要认为它们成为了标准。因此,事件本身可能会给您带来一些问题。
要解决这个问题,您可以使用一个库(例如 jQuery),它可以处理浏览器差异(或者您可以检查那里的代码并获取您需要的内容)。
第二种方法...尝试鼠标悬停...它效果更好(再次...有一段时间没有与他们一起工作,所以事情可能已经发生了,但这就是我内存中的样子)。
关于javascript - 文件输入javascript点击不是由真正的鼠标点击chrome生成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22223150/