为什么要使用modernizr? if(window.history)和if(Modernizr.history)之间有什么区别

时间:2014-12-03 10:29:42

标签: javascript

在过去的时间里,如果我不确定是否支持某些内容,

我将在Javascript中输入If(something){...}。

最近我发现Modernizr也很容易检测到浏览器的支持。

它会将类添加到HTML并创建一个名为Modernizr的对象,

但是我很困惑为什么我们不使用If(某事)但是if(Modernizr.something)

例如:

if(window.history){...}和if(Modernizr.history){...}之间的区别是什么?

1 个答案:

答案 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以经过验证的快速方式为您完成此操作时,您为什么要自己实现?