在IE11中,每当我在输入中使用accept属性时,除了通常的"所有文件"和"自定义文件(.xls)会出现另外两个类别:"图像"和" HTML"。有没有办法删除不需要的类别?
可以在任何带有accept属性的输入中为我重现这个问题,就像在这个JSFiddle中一样:http://jsfiddle.net/sachinjoseph/BkcKQ/
IE 10+, Edge, Chrome:<br />
<label>.xls,.xlsx files</label>
<input type="file" accept=".xls,.xlsx" />
<br />
<br />
IE 10+, Edge, Chrome, Firefox:<br />
<label>.xls,.xlsx files (using MIME-types)</label>
<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" />
<br />
<br />
<h3>
Recommended way of achieving file type filter:
</h3>
IE 10+, Edge, Chrome, Firefox:<br />
<label>.xls,.xlsx files (using both extensions and MIME-types)</label>
<input type="file"
accept=".xls,.xlsx, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" />
<br />
<br /> <br />
<br />
<b>Note:</b><p>Edge allows to choose files of any type by default, even if accept attribute is set, although it adds a custom filter list to the file-select dialog box. The user must manually apply the filter from the file-select dialog box.</p>
答案 0 :(得分:0)
IE通常不符合标准。 HTML标准允许mime类型以及文件扩展名为句号。相比之下,IE的accept属性规范仅提到了mime类型。这是官方规范所说的内容:
可以指定accept属性以向用户代理提供将接受哪些文件类型的提示。
如果指定,该属性必须由一组逗号分隔的标记组成,每个标记必须是以下之一的ASCII不区分大小写匹配:
- 字符串&#34; audio / *&#34;
表示接受声音文件。- 字符串&#34;视频/ *&#34;
表示接受视频文件。- 字符串&#34; image / *&#34;
表示接受图像文件。- 没有参数的有效MIME类型
表示接受指定类型的文件。- 一个字符串,其第一个字符是U + 002E FULL STOP字符(。)
表示接受具有指定文件扩展名的文件。
来源:
- https://html.spec.whatwg.org/multipage/input.html#attr-input-accept
- https://msdn.microsoft.com/en-us/library/ms533060%28v=vs.85%29.aspx
- File input 'accept' attribute - is it useful?