我正在处理一个现有的应用程序,遇到了以下代码行:
if (window.File && window.FileReader && window.FileList && window.Blob) {
DoSomething();
}
它似乎不起作用,尤其是IE。有更好的方法来检查HTML5支持吗?
"检查HTML5支持"是一个过于雄心勃勃的目标。每个用户代理都有不同级别的支持HTML的不同功能,所以这不是一个简单的包罗万象的"是的,这支持HTML5。"
事实上,你引用的代码似乎做得很好——它测试了它所需要的功能(显然是为了从操作系统中读取Blob),而不是整个通用概念。
标准是做一些像你引用的东西一样的事情,只检查你想要的功能。如果该语句返回的是假阴性,您可能需要查看处理特性检测的支持库,如modernizr。
HTML5只是一个流行语。浏览器支持各种各样的东西,我们将其归类为"HTML5"。您所拥有的代码正在进行"功能检测",以确定浏览器是否支持文件&blob API。
虽然你通常无法检测到对HTML5的完全支持,但有一个名为Modernizr的javascript库,它允许你检测HTML5和CSS3的功能支持。