mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-05-17 15:11:04 +00:00
53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
/*!
|
|
{
|
|
"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;
|
|
|
|
// Some browsers allow to have empty userAgent.
|
|
// Therefore, we need to check ua before using "indexOf" on it.
|
|
if(!ua) {
|
|
return false;
|
|
}
|
|
|
|
// 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);
|
|
});
|
|
});
|