Javascript 文件上载“更改”事件仅在safari中将上载文件设置为新文件列表时触发

Javascript 文件上载“更改”事件仅在safari中将上载文件设置为新文件列表时触发,javascript,html,filelist,Javascript,Html,Filelist,我需要将文件上载的文件设置为用户删除的文件,然后触发文件上载的更改事件 window.addEventListener("drop", (e) => { e.preventDefault(); fileUpload.files = e.dataTransfer.files; // change event only fires in safari fileUpload.dispatchEvent(new Event("change"))

我需要将文件上载的文件设置为用户删除的文件,然后触发文件上载的更改事件

window.addEventListener("drop", (e) => {
  e.preventDefault();

  fileUpload.files = e.dataTransfer.files; // change event only fires in safari
  fileUpload.dispatchEvent(new Event("change"));
});
上面的代码将文件上载的文件设置为删除的文件。在设置
fileUpload.files
属性时,Firefox和Chrome不会触发更改事件。然而,Safari确实如此

这会导致在Safari中触发两次更改事件,从而两次触发更改事件处理程序中的代码

我也厌倦了使用输入事件而不是更改事件,这会导致相同的行为

我想避免浏览器检测来解决这个问题。我正在寻找一个通用的解决方案,即使Chrome或Firefox采用Safari的行为也能奏效

在这种情况下,正确的行为是什么?Safari的还是Chrome的

是否有一个优雅的解决方案,只触发一个不使用媒体查询黑客或其他浏览器检测方法的更改事件