Показать сообщение отдельно
  #5 (permalink)  
Старый 18.10.2017, 09:59
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Если событие, которое вешается как "свойство" через префикс "on", то прям так и проверяйте:

if(elem.onclick) {
   //...
}


Если же, наличие обработчика в listener, то - никак, только если проксировать addEventListener/removeEventListener:

//Вставить перед всеми скриптами
(function() {
	var proto = HTMLElement.prototype,
		addEventListener = proto.addEventListener,
		removeEventListener = proto.removeEventListener;

	proto.addEventListener = function(type, callback, useCapture) {
		if(!this._listeners) {
			this._listeners = {};
		}
		if(!(type in this._listeners)) {
			this._listeners[type] = [];
		}

		if(this._listeners[type].indexOf(callback) === -1) {
			this._listeners[type].push(callback);
		}

		addEventListener.call(this, type, callback, useCapture);
	};

	proto.removeEventListener = function(type, callback, useCapture) {
		var index = this._listeners && type in this._listeners ? this._listeners[type].indexOf(callback) : -1;

		if(index !== -1) {
			this._listeners[type].splice(index, 1);
		}

		removeEventListener.call(this, type, callback, useCapture);
	};

	proto.hasEventListener = function(type) {
		return !!(this._listeners && type in this._listeners && this._listeners[type].length || typeof this['on' + type] === 'function');
	};
})();



var hasClick = myElem.hasEventListener('click');
var hasDblclick = myElem.hasEventListener('dblclick');
var hasMouseDown = myElem.hasEventListener('mousedown');
Ответить с цитированием