2015-07-31 4 views
0

Я хочу, чтобы вызвать какие-либо возможные действия пользователя на данном элементе, как, например: click, focus, mouseup, mousedown, keyup, keydown, etc...Javascript - триггерные действия или события?

Это так:

element.onclick(); 
element.onfocus(); 
element.onsubmit(); 
element.onmouseover(); 
element.onkeyup(); 
element.onkeydown(); 

Или есть что-то лучше этого добиться?

Спасибо

+0

Сначала узнайте, что на самом деле делают все эти методы ... – binariedMe

+1

Первые три действия триггера, и 2/3 из них запускают события. Последние три функции вызова с этими именами, которые являются обработчиками событий, но которые необязательно существуют и не обязательно являются единственными, и не выполняют связанные действия (например, фактически активируют ссылку, кнопку и т. Д., Фокусируя элемент или представление формы). Первые три справа иногда, и я дошел до того, что последние три всегда ошибаются. – Ryan

+0

@RohitKumar спасибо, изменен вопрос;) – sbaaaang

ответ

2

Если вы хотите, чтобы имитировать сгенерированный пользователем событие мышей (например, щелчки) вам следует что-то вроде:

<div id="someID" onclick="alert('a');"> 
    test 
</div> 
<script> 
var theElement = document.getElementById('someID') 
, triggerEvent = function triggerEvent(event, element) { 
    var evObj = document.createEvent('MouseEvents'); 
    evObj.initEvent(event, true, true); 
    element.dispatchEvent(evObj); 
}; 

triggerEvent('click', theElement); 
</script> 

В основном вы создаете событие из элемента и пусть обработчики справиться с этим. Here список событий.

Надеюсь, это поможет.

+0

Эй, это выглядит потрясающе, я думаю, что буду использовать это! – sbaaaang

1

Там в различные onevent свойства на элементах, которые, возможно, функции, и вы могли бы назвать их, но при этом, вы бы быть маршрутизации вокруг системы обработки событий DOM. Вам нужно будет передать надлежащие объекты Event в функции самостоятельно, и они автоматически не перейдут к родительским элементам.

Я не уверен, что произойдет, если событие элемента было установлено с addEventListener, и вы попытались вызвать его функцию onevent напрямую.

Продолжайте использовать методы, подобные HTMLElement.prototype.click и HTMLElement.prototype.focus. Они обрабатывают все это для вас.

+1

* «Я не уверен, что произойдет, если событие элемента было установлено с помощью' addEventListener', и вы попытались назвать его 'onevent' function ". * Функция' onevent' будет вызываться, но событий, связанных с 'addEventListener', не будет. –

+0

Более того, не связанный с ответом, я просто притворился бы, что свойства 'onevent' не существуют. У нас есть 'addEventListener (" event ", fn, false)', который работает лучше. – Havvy

+0

@ Хэвви спасибо, я просто предпочел другое решение, но это было хорошо то же самое imho – sbaaaang

Смежные вопросы