Как определить, является ли событие событием браузера или нет - PullRequest
2 голосов
/ 18 апреля 2011

Как бы вы проверили, является ли событие событием браузера (например, click, load, blur и т. Д.) На основе его имени (например, click)? (и нет Я не использую jquery / mootools / prototype / dojo)

UPDATE

В этой функции я прикрепляю события браузера (click и load), например:

observe: function(elements, eventName, callback) {
  if (!(elements.length != null)) {
    elements = [elements];
  }
  return this.each(elements, function(e) {
    if (helper.hooks.eventObserved != null) {
      helper.hooks.eventObserved(eventName, callback, e);
    }
    if (typeof e === 'string') {
      e = this.el(e);
    }
    if (e.addEventListener) {
      return e.addEventListener(eventName, callback, false);
    } else if (e.attachEvent) {
      return e.attachEvent("on" + eventName, callback);
    }
  });
},

И это вызывает событие:

fire: function(elements, eventName) {
  if (!(elements.length != null)) {
    elements = [elements];
  }
  return this.each(elements, function(e) {
    var evt;
    if (document.createEventObject != null) {
      evt = document.createEventObject();
      return e.fireEvent("on" + eventName);
    } else {
      evt = document.createEvent('HTMLEvents');
      evt.initEvent(eventName, true, true);
      return !e.dispatchEvent(evt);
    }
  });
},

Но я хочу проверить, существует ли событие, например, click - это событие браузера, а login не так, как бы я это протестировал?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Проверьте это решение от Юрий Зайцев ( живая демоверсия ).

Сам jQuery использует его.

0 голосов
/ 18 апреля 2011

Вы можете проверить, существует ли функция / объект element["on"+event]:

<a href="http://www.google.com" id="myAnchor">test</a>
<script>

function doesElementHaveEvent(element, event){
    return (typeof element["on"+event] != typeof undefined);
}

alert(doesElementHaveEvent(document.getElementById("myAnchor"), "click")); // true
alert(doesElementHaveEvent(document.getElementById("myAnchor"), "login")); // false
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...