在过去的时间里,如果我不确定是否支持某些内容,
我将在Javascript中输入If(something){...}。
最近我发现Modernizr也很容易检测到浏览器的支持。
它会将类添加到HTML并创建一个名为Modernizr的对象,
但是我很困惑为什么我们不使用If(某事)但是if(Modernizr.something)
例如:
if(window.history){...}和if(Modernizr.history){...}之间的区别是什么?
答案 0 :(得分:3)
因为它并不总是那么简单。如果您只需要检查window.history
,则不需要现代化。但是如果你必须检查其他期货,你应该使用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以经过验证的快速方式为您完成此操作时,您为什么要自己实现?