文件类型的输入事件未在 Safari 浏览器中触发

fat*_*ato 5 safari jquery

我正在使用 AJAX 和 jQuery 上传文件。它在 Chrome 和 Firefox 中运行良好,但我遇到的问题是在 Safari 中。我试图对此进行调试,但是当我上传文件时调试器并没有停止。

<input type="file" class="file_input" name="myfile"/>
Run Code Online (Sandbox Code Playgroud)
<input type="file" class="file_input" name="myfile"/>
Run Code Online (Sandbox Code Playgroud)

Ror*_*san 5

Safari 不支持输入元素input上的事件:file

(Safari 和其他一些浏览器)在选中(取消)选中复选框或单选按钮时,或者更改 . 请参阅 Chrome 错误、WebKit 错误和 Firefox 错误

https://caniuse.com/#feat=input-event

要解决此问题,您可以使用更广泛支持的change事件:

$(document).on('change', '.file_input', function() {
  // your code...
});
Run Code Online (Sandbox Code Playgroud)

- 2020 更新 -

Safari 中的此问题已在 2020 年 3 月发布的版本 13.1 中得到修复。需要明确的是,此后的任何版本的 Safari 现在都支持input输入事件file

如果您需要支持旧版本的 Safari,那么您仍然需要使用该change事件,如我上面的原始答案中所述。