Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.10.2017, 22:37
Аспирант
Отправить личное сообщение для милт Посмотреть профиль Найти все сообщения от милт
 
Регистрация: 28.06.2014
Сообщений: 55

Как узнать есть ли событие у элемента
Существует некий элемент у которого предположительно есть или нет события onclick или ondblclick или возможно onmousedown. Как программно узнать есть ли событие у элемента? По возможности, без использования jQuery.
Ответить с цитированием
  #2 (permalink)  
Старый 18.10.2017, 08:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от милт
Как программно узнать есть ли событие у элемента?
Как вариант...

<button>Test</button>
<script type='text/javascript'>
var o=document.getElementsByTagName('button')[0];
o.addEventListener('click',function(){
	alert(1);
});
if (o.click){
	alert('Есть click');
} else {
	alert('Нет click');
};
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 18.10.2017, 08:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

ksa,
как получить alert('Нет click')???
Ответить с цитированием
  #4 (permalink)  
Старый 18.10.2017, 09:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от рони
как получить alert('Нет click')?
Дааа...
Фокус не удался - факир был пьян. (с)
Ответить с цитированием
  #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');
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать есть ли полоски скроллбара? WadimS jQuery 2 13.11.2016 12:10
Как сохранить обработчики элемента, при изменения положения элемента в dom-дереве ? Danxil Events/DOM/Window 5 08.11.2013 23:33
есть ли в js понятие частоты кадров, наподобие как во флэше? andrew_F Общие вопросы Javascript 8 01.05.2012 20:25
Как узнать индекс элемента над которым находится курсор Zhazhah jQuery 2 28.03.2011 23:30
Как узнать, присутствует ли в окне полоса прокрутки или нет? возжаждавший Элементы интерфейса 6 12.03.2010 23:00