因爲它並不總是那麼簡單。如果你只需要檢查window.history
你不需要modernizr。但是如果你必須檢查其他期貨,你應該使用modernizr,因爲它已經實現了最好的和輕量級的方法來檢測這個期貨。看看源代碼,例如hashchange
檢測:
isEventSupported = (function() {
var TAGNAMES = {
'select': 'input', 'change': 'input',
'submit': 'form', 'reset': 'form',
'error': 'img', 'load': 'img', 'abort': 'img'
};
function isEventSupported(eventName, element) {
element = element || document.createElement(TAGNAMES[eventName] || 'div');
eventName = 'on' + eventName;
var isSupported = eventName in element;
if (!isSupported) {
if (!element.setAttribute) {
element = document.createElement('div');
}
if (element.setAttribute && element.removeAttribute) {
element.setAttribute(eventName, '');
isSupported = is(element[eventName], 'function');
if (!is(element[eventName], 'undefined')) {
element[eventName] = undefined;
}
element.removeAttribute(eventName);
}
}
element = null;
return isSupported;
}
return isEventSupported;
})(),
爲什麼你會被自己實現這個Modernizr的時候會爲你在一個證明,快捷的方式?
[邊緣情況](https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js)。 – JJJ 2014-12-03 10:33:42
@Juhana我從網站上下載了開發版本,只發現這裏面:'tests ['history'] = function(){return !!(window.history && history.pushState);};'。你知道爲什麼它與存儲庫不同嗎? – 2014-12-03 10:45:22