所以,我最近在 Twitter 上看到了对 canPlayType 的引用。基本上总结就是:
The canPlayType() method checks if the browser can play the specified audio/video type.
The canPlayType() method can return one of the following values:
"probably" - the browser most likely supports this audio/video type
"maybe" - the browser might support this audio/video type
"" - (empty string) the browser does not support this audio/video type
为什么它的行为不像典型的 API 而只是返回 true/false?...以及为什么非常模糊的术语“也许”和“可能”?
它为您提供了一个很好的猜测,因此您可以在不同的 mime 类型之间进行选择来为用户服务。你无法确定,因为 mime 类型只是容器,浏览器在不尝试播放音频的情况下不知道里面有什么编解码器。
为什么?因为这就是规范所说的http://dev.w3.org/html5/spec-preview/media-elements.html#dom-navigator-canplaytype
如果 type 是用户代理知道它无法呈现的类型或者是“application/octet-stream”类型,则
方法必须返回空字符串;如果用户代理确信该类型表示与此音频或视频元素一起使用时可以呈现的媒体资源,则它必须返回“可能”;否则它必须返回“也许”。鼓励实现者返回“也许”,除非可以自信地确定该类型是否受支持。一般来说,如果该参数不存在,用户代理永远不应该为允许编解码器参数的类型返回“可能”。canPlayType(type)