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