如何以编程方式使用JavaScript打开文件选择器?

Ran*_*lue 7 javascript google-chrome

可能重复:
在JavaScript中我可以以编程方式为文件输入元素触发"click"事件吗?

我天真地尝试以下方法用JavaScript以编程方式打开文件选择器(请参阅此处的小提琴):

<input type='file'>?

<script>
    $(function () {
        $('input').click();
    });
</script>
Run Code Online (Sandbox Code Playgroud)

以上不起作用.如何input type='file'用JavaScript 打开文件选择器?

Chr*_*son 10

出于安全原因,您无法触发对话框,除非它是对某些用户触发的事件的响应.例如,您可以通过单击其他元素来触发对话框:

$(function () {
    $(".someElement").click(function () {
        $('#f').click();
    });
});
Run Code Online (Sandbox Code Playgroud)

工作实例.


pim*_*vdb 5

作为安全措施,您只能在用户输入上打开此类对话框,例如单击事件(在任何元素上).您无法随机打开它,例如页面加载.

http://jsfiddle.net/fEBFp/2/

  • 响应用户输入可以很好地跨浏览器,但只有一件事.如果文件输入具有"display:none"或"visibility:hidden",则对话框可能无法在较旧的浏览器中打开.这里是一个[小提琴](http://jsfiddle.net/ult_combo/fEBFp/3/),使用了一个没有`display` /`visibility` CSS的替代掩码的例子. (3认同)
  • 我认为这有点奇怪,但是在控制台中没有安全例外. (2认同)