表一
BROWSERSSelect up to five browsers and compare their test results in detail | Chrome 68 | Edge 18 | Firefox 52 | Safari 11.2 | Internet Explorer 11 |
---|
parsing rules | 5 | 5 | 5 | 5 | 5 |
---|---|---|---|---|---|
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
HTML5 tokenizer | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
HTML5 tree building | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Parsing inline SVG | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Parsing inline MathML | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
elements | 27 | 23 | 26 | 26 | 15 |
---|---|---|---|---|---|
Embedding custom non-visible data | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
New or modified elements | |||||
Section elements | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Grouping content elements | Yes ✔ | Partial ○ | Yes ✔ | Yes ✔ | Partial ○ |
Text-level semantic elements | Yes ✔ | Yes ✔ | Partial ○ | Yes ✔ | Partial ○ |
Interactive elements | Partial ○ | No ✘ | Partial ○ | Partial ○ | No ✘ |
Global attributes or methods | |||||
Dynamic markup insertion | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
forms | 64 | 64 | 44 | 42 | 34 |
---|---|---|---|---|---|
Field types | |||||
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Partial ○ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Partial ○ | Partial ○ | Partial ○ | Partial ○ | Partial ○ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Partial ○ |
| Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Fields | |||||
Field validation | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Association of controls and forms | Yes ✔ | Yes ✔ | Partial ○ | Yes ✔ | Partial ○ |
Other attributes | Yes ✔ | Partial ○ | Partial ○ | Yes ✔ | Partial ○ |
CSS selectors | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Partial ○ |
Events | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Partial ○ |
Forms | |||||
Form validation | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
web components | 10 | 2 | 2 | 6 | 0 |
---|---|---|---|---|---|
Custom elements | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
Shadow DOM | Yes ✔ | No ✘ | No ✘ | Yes ✔ | No ✘ |
HTML templates | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
HTML imports | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
location and orientation | 20 | 20 | 20 | 15 | 20 |
---|---|---|---|---|---|
Geolocation | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Device Orientation | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ |
Device Motion | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ |
output | 8 | 8 | 8 | 8 | 3 |
---|---|---|---|---|---|
Full screen support | Prefixed ✔ | Prefixed ✔ | Prefixed ✔ | Prefixed ✔ | Prefixed ✔ |
Web Notifications | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
input | 10 | 10 | 5 | 5 | 5 |
---|---|---|---|---|---|
Gamepad control | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Pointer Events | Yes ✔ | Yes ✔ | No ✘ | No ✘ | Yes ✔ |
Pointer Lock support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
video | 29 | 33 | 29 | 33 | 31 |
---|---|---|---|---|---|
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Subtitles | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Audio track selection | No ✘ | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ |
Video track selection | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Poster images | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Codec detection | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Video codecs | |||||
MPEG-4 ASP support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
H.264 support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
H.265 support | No ✘ | Yes ✔ | No ✘ | No ✘ | No ✘ |
Ogg Theora support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
WebM with VP8 support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
WebM with VP9 support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
audio | 29 | 27 | 27 | 25 | 20 |
---|---|---|---|---|---|
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Loop audio | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Preload in the background | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Advanced | |||||
Web Audio API | Yes ✔ | Yes ✔ | Yes ✔ | Prefixed ✔ | No ✘ |
Speech Recognition | Prefixed ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
Speech Synthesis | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Audio codecs | |||||
PCM audio support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
MP3 support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
AAC support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Dolby Digital support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Dolby Digital Plus support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Ogg Vorbis support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Ogg Opus support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
WebM with Vorbis support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
WebM with Opus support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
streaming | 5 | 5 | 5 | 5 | 5 |
---|---|---|---|---|---|
Media Source extensions | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
DRM support | Yes ✔ | Yes ✔ | Yes ✔ | Prefixed ✔ | Prefixed ✔ |
Adaptive bit rate | |||||
Dynamic Adaptive Streaming / MPEG-DASH | No ✘ | Yes ✔ | No ✘ | No ✘ | No ✘ |
HTTP Live Streaming / HLS | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Codecs | |||||
Video codecs | Partial ○ | Partial ○ | Partial ○ | Partial ○ | Partial ○ |
Audio codecs | Partial ○ | Yes ✔ | Partial ○ | Partial ○ | Partial ○ |
responsive images | 15 | 15 | 15 | 15 | 0 |
---|---|---|---|---|---|
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
2d graphics | 24 | 24 | 24 | 24 | 14 |
---|---|---|---|---|---|
Canvas 2D graphics | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Drawing primitives | |||||
Text support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Path support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Ellipse support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Dashed line support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
System focus ring support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Features | |||||
Hit testing support | No ✘ | No ✘ | No ✘ | No ✘ | No ✘ |
Blending modes | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Image export formats | |||||
PNG support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
JPEG support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
JPEG-XR support | No ✘ | No ✘ | No ✘ | No ✘ | No ✘ |
WebP support | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
3d and vr | 20 | 18 | 20 | 15 | 15 |
---|---|---|---|---|---|
3D Graphics | |||||
WebGL | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Prefixed ✔ |
WebGL 2 | Yes ✔ | No ✘ | Yes ✔ | No ✘ | No ✘ |
VR Headset | |||||
WebVR | No ✘ | Yes ✔ | No ✘ | No ✘ | No ✘ |
animation | 8 | 5 | 8 | 8 | 5 |
---|---|---|---|---|---|
Web Animations API | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
communication | 40 | 35 | 40 | 40 | 27 |
---|---|---|---|---|---|
Server-Sent Events | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
Beacon | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Fetch | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
XMLHttpRequest Level 2 | |||||
Upload files | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Response type support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
WebSocket | |||||
Basic socket communication | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
streams | 4 | 4 | 0 | 4 | 0 |
---|---|---|---|---|---|
Readable streams | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Writable streams | No ✘ | No ✘ | No ✘ | No ✘ | No ✘ |
peer to peer | 40 | 33 | 40 | 38 | 0 |
---|---|---|---|---|---|
Connectivity | |||||
WebRTC 1.0 | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
ObjectRTC API for WebRTC | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Data channel | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
Input | |||||
Access the webcam | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Screen Capture | No ✘ | No ✘ | No ✘ | No ✘ | No ✘ |
Enumerate devices | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Recording | |||||
Media Stream recorder | Yes ✔ | No ✘ | Yes ✔ | No ✘ | No ✘ |
user interaction | 19 | 19 | 18 | 20 | 12 |
---|---|---|---|---|---|
Drag and drop | |||||
Attributes | Partial ○ | Partial ○ | Partial ○ | Yes ✔ | Partial ○ |
Events | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
HTML editing | |||||
Editing elements | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Editing documents | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
CSS selectors | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
APIs | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Clipboard | |||||
Clipboard API and events | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Spellcheck | |||||
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
performance | 12 | 10 | 11 | 10 | 10 |
---|---|---|---|---|---|
Workers | |||||
Web Workers | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Shared Workers | Yes ✔ | No ✘ | Yes ✔ | No ✘ | No ✘ |
Other | |||||
| Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
security | 29 | 29 | 24 | 26 | 13 |
---|---|---|---|---|---|
Web Cryptography API | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Prefixed ✔ |
Content Security Policy 1 | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Content Security Policy 2 | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Cross-Origin Resource Sharing | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Subresource Integrity | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Cross-document messaging | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Authentication | |||||
Web Authentication / FIDO 2 | No ✘ | Partial ○ | No ✘ | No ✘ | No ✘ |
Credential Management | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
Iframes | |||||
Sandboxed | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
payments | 5 | 5 | 0 | 5 | 0 |
---|---|---|---|---|---|
Web Payments | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
web applications | 16 | 15 | 17 | 13 | 3 |
---|---|---|---|---|---|
Offline resources | |||||
Application Cache | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Service Workers | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Push Messages | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Content and Scheme handlers | |||||
Custom scheme handlers | Yes ✔ | No ✘ | Yes ✔ | No ✘ | No ✘ |
Custom content handlers | No ✘ | No ✘ | Yes ✔ | No ✘ | No ✘ |
storage | 35 | 35 | 35 | 35 | 35 |
---|---|---|---|---|---|
Key-value storage | |||||
Session Storage | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Local Storage | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Database storage | |||||
IndexedDB | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Objectstore | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Objectstore | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Web SQL Database | Yes ✔ | No ✘ | No ✘ | Yes ✔ | No ✘ |
files | 15 | 15 | 15 | 15 | 15 |
---|---|---|---|---|---|
Reading files | |||||
Basic support for reading files | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Create a | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Create a Data URL from a | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Create an | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Create a Blob URL from a | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Accessing the file system | |||||
FileSystem API | No ✘ | No ✘ | No ✘ | No ✘ | No ✘ |
File API: Directories and System | Prefixed ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
scripting | 30 | 28 | 27 | 30 | 16 |
---|---|---|---|---|---|
Script execution | |||||
Asynchronous script execution | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Defered script execution | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Script execution events | No ✘ | No ✘ | Yes ✔ | No ✘ | No ✘ |
Runtime script error reporting | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
ECMAScript 5 | |||||
JSON encoding and decoding | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
ECMAScript 6 | |||||
Modules | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Classes | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Arrow functions | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Promises | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Template strings | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Typed arrays | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Internationalization | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
ECMAScript 7 | |||||
Async and Await | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Other API's | |||||
Base64 encoding and decoding | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Mutation Observer | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
URL API | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Encoding API | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
other | 9 | 9 | 9 | 9 | 9 |
---|---|---|---|---|---|
Session history | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Page Visibility | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Text selection | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
Scroll into view | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ |
表二
BROWSERSSelect up to five browsers and compare their test results in detail | Chrome 68 | Edge 18 | Firefox 52 | Safari 11.2 | Internet Explorer 11 |
---|
difference | |||||
---|---|---|---|---|---|
Grouping content elements ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Grouping content elements ▸ | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
Text-level semantic elements ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Text-level semantic elements ▸ | Yes ✔ | Yes ✔ | Disabled ✘ | Yes ✔ | No ✘ |
Text-level semantic elements ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Text-level semantic elements ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Text-level semantic elements ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Interactive elements ▸ | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
Interactive elements ▸ | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
Interactive elements ▸ | No ✘ | No ✘ | Partial ○ | No ✘ | No ✘ |
Interactive elements ▸ | No ✘ | No ✘ | Partial ○ | No ✘ | No ✘ |
Interactive elements ▸ | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Association of controls and forms ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Association of controls and forms ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Association of controls and forms ▸ | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Other attributes ▸ | Yes ✔ | No ✘ | No ✘ | Yes ✔ | No ✘ |
CSS selectors ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
CSS selectors ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
CSS selectors ▸ | Yes ✔ | Yes ✔ | Prefixed ✔ | Yes ✔ | No ✘ |
CSS selectors ▸ | Yes ✔ | Yes ✔ | Prefixed ✔ | Yes ✔ | No ✘ |
Events ▸ | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Custom elements | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
Shadow DOM | Yes ✔ | No ✘ | No ✘ | Yes ✔ | No ✘ |
HTML templates | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
HTML imports | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
Device Orientation | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ |
Device Motion | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ |
Web Notifications | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Gamepad control | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Pointer Events | Yes ✔ | Yes ✔ | No ✘ | No ✘ | Yes ✔ |
Pointer Lock support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Audio track selection | No ✘ | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ |
Video track selection | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
MPEG-4 ASP support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
H.265 support | No ✘ | Yes ✔ | No ✘ | No ✘ | No ✘ |
Ogg Theora support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
WebM with VP8 support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
WebM with VP9 support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Web Audio API | Yes ✔ | Yes ✔ | Yes ✔ | Prefixed ✔ | No ✘ |
Speech Recognition | Prefixed ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
Speech Synthesis | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
PCM audio support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Dolby Digital support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Dolby Digital Plus support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Ogg Vorbis support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Ogg Opus support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
WebM with Vorbis support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
WebM with Opus support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
DRM support | Yes ✔ | Yes ✔ | Yes ✔ | Prefixed ✔ | Prefixed ✔ |
Dynamic Adaptive Streaming / MPEG-DASH | No ✘ | Yes ✔ | No ✘ | No ✘ | No ✘ |
HTTP Live Streaming / HLS | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Video codecs ▸ MP4 with H.265 support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Video codecs ▸ TS with H.264 support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ |
Video codecs ▸ TS with H.265 support | No ✘ | No ✘ | No ✘ | Yes ✔ | No ✘ |
Video codecs ▸ WebM with VP8 support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Video codecs ▸ WebM with VP9 support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Audio codecs ▸ MP4 with Dolby Digital support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Audio codecs ▸ MP4 with Dolby Digital Plus support | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Audio codecs ▸ TS with AAC support | No ✘ | Yes ✔ | No ✘ | No ✘ | Yes ✔ |
Audio codecs ▸ TS with Dolby Digital support | No ✘ | Yes ✔ | No ✘ | No ✘ | No ✘ |
Audio codecs ▸ TS with Dolby Digital Plus support | No ✘ | Yes ✔ | No ✘ | No ✘ | No ✘ |
Audio codecs ▸ WebM with Vorbis support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Audio codecs ▸ WebM with Opus support | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Path support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Ellipse support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
System focus ring support | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Blending modes | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
WebP support | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
WebGL | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Prefixed ✔ |
WebGL 2 | Yes ✔ | No ✘ | Yes ✔ | No ✘ | No ✘ |
WebVR | No ✘ | Yes ✔ | No ✘ | No ✘ | No ✘ |
Web Animations API | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
Server-Sent Events | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
Beacon | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Fetch | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Readable streams | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
WebRTC 1.0 | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
ObjectRTC API for WebRTC | No ✘ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Data channel | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |
Access the webcam | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Enumerate devices | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Media Stream recorder | Yes ✔ | No ✘ | Yes ✔ | No ✘ | No ✘ |
Attributes ▸ | No ✘ | No ✘ | No ✘ | Prefixed ✔ | No ✘ |
CSS selectors ▸ | Yes ✔ | Yes ✔ | Prefixed ✔ | Yes ✔ | No ✘ |
CSS selectors ▸ | Yes ✔ | Yes ✔ | Prefixed ✔ | Yes ✔ | No ✘ |
Clipboard API and events | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Shared Workers | Yes ✔ | No ✘ | Yes ✔ | No ✘ | No ✘ |
| Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
Web Cryptography API | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | Prefixed ✔ |
Content Security Policy 1 | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Content Security Policy 2 | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Subresource Integrity | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Web Authentication / FIDO 2 | No ✘ | Partial ○ | No ✘ | No ✘ | No ✘ |
Credential Management | Yes ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
| Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Web Payments | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Service Workers | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Push Messages | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ | No ✘ |
Custom scheme handlers | Yes ✔ | No ✘ | Yes ✔ | No ✘ | No ✘ |
Custom content handlers | No ✘ | No ✘ | Yes ✔ | No ✘ | No ✘ |
Web SQL Database | Yes ✔ | No ✘ | No ✘ | Yes ✔ | No ✘ |
File API: Directories and System | Prefixed ✔ | No ✘ | No ✘ | No ✘ | No ✘ |
Script execution events | No ✘ | No ✘ | Yes ✔ | No ✘ | No ✘ |
Modules | Yes ✔ | Yes ✔ | No ✘ | Yes ✔ | No ✘ |
Classes | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Arrow functions | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Promises | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Template strings | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Async and Await | Yes ✔ | Yes ✔ | Yes ✔ | Yes ✔ | No ✘ |
Encoding API | Yes ✔ | No ✘ | Yes ✔ | Yes ✔ | No ✘ |