input:file 如何不通过点击触发。

<input type="file" > 如何不通过点击触发而使用js模拟触发出现文件选择弹出框。(也不能点击其他的元素)。

阅读 9k
2 个回答

jquery触发
$('input').click()
也可以用原生的方式
dom = document.getElementById('').click();
或者用
var event = document.createEvent('MouseEvents')
event.initMouseEvent('click',false,false)
dom.dispatchEvent(event)

<input type="file" id="upload">

var $input = document.querySelector('#upload');
$input.onclick = function() {
    console.log('a');
}
$input.click();

在chrome里面执行上面的代码,控制台会打印出console语句的内容,但是不会弹出选择文件的窗口,直接在控制台执行document.querySelector('#upload').click()就会弹出窗口。
在firefox会有一行提示信息说阻止了一个弹出窗口,如果选择了允许,就能弹出选择文件的窗口了。
这应该是浏览器出于安全方面的考虑吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题