好吧,最好的方法不是通过浏览器嗅探,Juriy Zaytsev ( @kangax ) 提出了一个非常有用的方法来检测事件支持:
var isEventSupported = (function(){
  var TAGNAMES = {
    'select':'input','change':'input',
    'submit':'form','reset':'form',
    'error':'img','load':'img','abort':'img'
  }
  function isEventSupported(eventName) {
    var el = document.createElement(TAGNAMES[eventName] || 'div');
    eventName = 'on' + eventName;
    var isSupported = (eventName in el);
    if (!isSupported) {
      el.setAttribute(eventName, 'return;');
      isSupported = typeof el[eventName] == 'function';
    }
    el = null;
    return isSupported;
  }
  return isEventSupported;
})();
用法:
if (isEventSupported('hashchange')) {
  //...
}
这种技术现在在一些库中使用,比如jQuery。
在此处阅读更多信息: