我尝试使用<input type="file" ...>
元素的accept属性将文件打开对话框限制为RTF文件。 Internet资源表明此属性可以包含以逗号分隔的扩展名和MIME类型列表。它确实有效,但有一个验证问题:
此HTML5代码
<!DOCTYPE html>
<html>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
<form>
<input type="file" accept=".rtf, text/rtf, application/rtf, text/richtext" />
<input type="submit"/>
</form>
</body>
</html>
导致此错误
错误值.rtf,text / rtf,application / rtf,属性的text / richtext 接受元素输入:期望一个令牌字符或/但看到, 代替。
这是W3C验证器的实验性HTML5一致性检查器中的错误吗?
答案 0 :(得分:4)
来自spec,
可以指定
accept
属性为用户代理提供 提示将接受哪些文件类型。如果指定,该属性必须包含一组comma-separated tokens,每个ASCII case-insensitive必须是valid MIME type with no parameters匹配 对于以下之一:
- 字符串
audio/*
表示接受声音文件。- 字符串
video/*
表示接受视频文件。- 字符串
image/*
表示接受图像文件。- A {{3}}
表示接受指定类型的文件。- 第一个字符为“。”的字符串。 (U + 002E)字符
表示接受具有指定文件扩展名的文件。
我尝试了验证器,
<input type="file" accept="text/rtf, application/rtf, text/richtext" />
验证。<input type="file" accept=".rtf" />
无法验证。所以问题是.rtf
,应该被接受,因为它属于允许令牌的最后一类。
此外,规范提供了此示例,但未验证
<input type="file" accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document">
然后,这是验证器的问题。