HTML5: The Good, the Bad, and Everything In Between
1.
2. History API
Pros
Provides much-needed Back button support and
optionally deep-linking support for single-page apps
(SPAs)
Cons
Provides limited freedom to modify backstack
IE Chrome Firefox Opera Safari
10+ 8+ 4+ 11.5+ 5+
http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html
3. Geolocation API
Pros
Simple, powerful, and easy to learn
Works almost everywhere (including desktop browsers)
Supports GPS, WiFi Positioning, and triangulation
Cons
Provides no control over callback frequency
IE Chrome Firefox Opera Safari
9+ 5+- 3.5+ 10.6+ 5+
http://www.w3.org/TR/geolocation-API/
4. Audio and Video
Pros
Provides native support for audio and video
Eliminate need for Flash players, Silverlight players, etc.
Cons
No standard audio or video file format
No support for streaming, adaptive bitrates, or DRM
IE Chrome Firefox Opera Safari
9+ 4+ 3.5+ 10.5+ 4+
http://www.w3.org/TR/html5/the-video-element.html
5. Fullscreen API
Pros
Provides full-screen support for all HTML
elements, including VIDEO elements
Cons
Not supported in Internet Explorer
IE Chrome Firefox Opera Safari
- 15+ 10+ 12.1+ 5.1+
http://www.w3.org/TR/fullscreen/
6. Canvas
Pros
Graphics API fills big hole in HTML
API is rich (for 2D), yet relatively easy to learn
requestAnimationFrame makes animations better
Cons
API is primitive by today's standards
IE Chrome Firefox Opera Safari
9+ 4+ 2+ 9+ 3.1+
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html
7. Web Workers
Pros
Allows for multithreaded JavaScript apps
API eliminates most complexities from multithreading
Cons
High overhead when transferring large objects between
threads (mitigated by new transferrable objects feature)
IE Chrome Firefox Opera Safari
10+ 4+ 3.5+ 10.6+ 4+
http://dev.w3.org/html5/workers/
8. Web Storage
Pros
Allows Web apps to store data persistently on client
API simple and easy to learn
Cons
Data is stringified when stored and requires type coercion
Recommended 5 MB storage limit is too restricting
IE Chrome Firefox Opera Safari
8+ 5+ 3.5+ 10.5+ 4+
http://www.w3.org/TR/webstorage/
9. Indexed DB
Pros
Provides a structured alternative to Web storage
Supports fast (indexed) retrieval from large data sets
Supports transacted access and large storage volumes
Cons
No query language; reads are case-sensitive
IE Chrome Firefox Opera Safari
10+ 11+ 4+ - -
http://www.w3.org/TR/IndexedDB/
10. Offline Apps
Pros
Provides offline caching story for running apps when not
connected
Cons
Story for updating cached content is confusing
API could be richer
IE Chrome Firefox Opera Safari
10+ 5+ 3.6+ 12+ 4+
http://www.w3.org/TR/html5/offline.html
11. FileReader API
Pros
Provides async API for reading files
Relatively well-designed and widely adopted
Cons
Reads were all or nothing until introduction of
slicing, which still isn't universally supported
IE Chrome Firefox Opera Safari
10+ 6+ 4+ 12+ -
http://www.w3.org/TR/FileAPI/
12. FileWriter and FileSystem APIs
Pros
Provides much-needed API for file writing
Cons
Specifications came very late, adoption has been slow
Implementations to date only support virtual file systems
API is complex and unintuitive (but fortunately async)
IE Chrome Firefox Opera Safari
- 13+ - - -
http://www.w3.org/TR/file-writer-api/ | http://www.w3.org/TR/file-system-api/
13. XMLHttpRequest Level 2
Pros
Cross-origin calls via CORS protocol
Support for progress reporting on file uploads
Support for binary data transfers (send and receive)
Support for request time-outs
Cleaner, more consistent API
IE Chrome Firefox Opera Safari
10+ 7+ 4+ 12+ 5+
http://www.w3.org/TR/XMLHttpRequest/
14. WebSockets
Pros
Push model for client-side updates
Compatible with proxies and firewalls
Supported in other platforms (e.g., Windows 8)
Simple and intuitive API
IE Chrome Firefox Opera Safari
10+ 14+ 6+ 11+ 5+
http://dev.w3.org/html5/websockets/
15. Forms
Pros
Allows for richer HTML UIs (finally!)
Allows browsers to assume partial responsibility for
input validation (required fields, pattern fields, etc.)
Cons
Should have happened a long time ago
Not ambitious enough in scope
http://www.w3.org/TR/html5/forms.html