javascript - 文件输入javascript点击不是由真正的鼠标点击chrome生成的

标签 javascript jquery html google-chrome

我在 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/

相关文章:

jquery - 即使我使用 <!DOCTYPE>,如何设置 div 的高度(以 % 为单位)?

javascript - Node.js 回调函数不起作用

javascript - 始终将插入符保持在文本区域的垂直中间

javascript - 为什么 jQuery .attr 总是说这是未定义的?

jquery - 是否有一个 javascript(jQuery) 插件可以无缝隐藏/显示 flash swf?

css - 垂直对齐 float 图像旁边的多条线

javascript - 将 API 更新信息推送到正在运行的客户端的最佳做法是什么?

javascript - Angular 单选按钮未正确检查

javascript - CSS3 过渡而不是 jQuery

javascript - 编写条件以添加属性