在Opera,Chrome甚至是IE 11等Chromium浏览器中,我可以检测到文件输入的关闭,并调用document.body.onfocus,但这在Firefox中不起作用,而且我似乎找不到任何方法在Firefox中。
代码:
const Input = document.createElement('input');
Input.type = 'file';
const ref = {
files: undefined,
hasClosed: false,
};
document.body.onfocus = () => ref.hasClosed = true;
Input.onchange = function () {
ref.files = this.files;
};
document.body.appendChild(Input)
Input.click();
while (ref.files === undefined && !ref.hasClosed) {
delay(100);
} //checks condition every 100ms
//code to upload the file to my database or not
document.body.removeChild(Input);
这在chrome等操作系统中完美运行,但是在Firefox中,onfocus事件永远不会触发,循环永远不会结束...
PS:我不能添加一个提交按钮,这一切都必须在用户没有进一步输入的情况下完成。