在非IE浏览器中,我遇到了关于"input标签"的问题:
<input type="file" ...
我正在尝试编写上传程序,仅使用JavaScript和ASP.NET。
上传文件时没有问题。
我的问题出现在我想在非IE浏览器中获取文件时。
<input type="file" ...
我不想直接使用input
,因为它的外观不能正确更改。
我编写了这段代码来从硬盘中获取文件:
function $tag(_str_tag) {
return document.getElementsByTagName(_str_tag);
}
function $create(_str_tag) {
return document.createElement(_str_tag);
}
function $open_file() {
_el_upload = $create("input");
_el_body = $tag("body")[0];
_el_upload.setAttribute("type", "file");
_el_upload.style.visibility = "hidden";
_el_upload.setAttribute("multiple", "multiple");
_el_upload.setAttribute("position", "absolute");
_el_body.appendChild(_el_upload);
_el_upload.click();
_el_body.removeChild(_el_upload);
return _el_upload.files;
}
在IE中,它工作得很好并返回我的文件。在Chrome和Firefox中,在加载“文件输入对话框”后,它无法返回任何文件。
而Opera和Safari完全不能用。
我可以用这个技巧来解决它,但基本上不太好。
_el_upload.click();
alert();
我认为“回调函数”或“等待函数”可以解决这个问题,但我无法处理它。
<input>
元素的onchange
事件。在选择文件之前发生return _el_upload.files
。 - gen_Eric