12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*!
- {
- "name": "History API",
- "property": "history",
- "caniuse": "history",
- "tags": ["history"],
- "authors": ["Hay Kranen", "Alexander Farkas"],
- "notes": [{
- "name": "W3C Spec",
- "href": "https://www.w3.org/TR/html51/browsers.html#the-history-interface"
- }, {
- "name": "MDN Docs",
- "href": "https://developer.mozilla.org/en-US/docs/Web/API/window.history"
- }],
- "polyfills": ["historyjs", "html5historyapi"]
- }
- !*/
- /* DOC
- Detects support for the History API for manipulating the browser session history.
- */
- define(['Modernizr'], function(Modernizr) {
- Modernizr.addTest('history', function() {
- // Issue #733
- // The stock browser on Android 2.2 & 2.3, and 4.0.x returns positive on history support
- // Unfortunately support is really buggy and there is no clean way to detect
- // these bugs, so we fall back to a user agent sniff :(
- var ua = navigator.userAgent;
- // We only want Android 2 and 4.0, stock browser, and not Chrome which identifies
- // itself as 'Mobile Safari' as well, nor Windows Phone (issue #1471).
- if ((ua.indexOf('Android 2.') !== -1 ||
- (ua.indexOf('Android 4.0') !== -1)) &&
- ua.indexOf('Mobile Safari') !== -1 &&
- ua.indexOf('Chrome') === -1 &&
- ua.indexOf('Windows Phone') === -1 &&
- // Since all documents on file:// share an origin, the History apis are
- // blocked there as well
- location.protocol !== 'file:'
- ) {
- return false;
- }
- // Return the regular check
- return (window.history && 'pushState' in window.history);
- });
- });
|