Пользовательское событие в HTML, Javascript
Я ищу, чтобы создать пользовательское событие в HTML, JS.
<input type="text" oncustombind="foo(event);" />
Как я могу создать один такой? "oncustombind" - это пользовательское событие, которое я хочу создать. Я должен быть в состоянии вызвать функцию / код, определенный в атрибуте oncustombind. Также мне нужно передать некоторые данные в объект события.
Я не хочу использовать какие-либо библиотеки, такие как jquery, YUI.
Любая помощь будет высоко ценится.
2 ответа
Решение
Вы хотите CustomEvent
С ними должно быть легко работать, но поддержка браузера слабая. Однако DOM-шим должен это исправить.
var ev = new CustomEvent("someString");
var el = document.getElementById("someElement");
el.addEventListener("someString", function (ev) {
// should work
});
el.dispatchEvent(ev);
Это плохая практика, чтобы использовать new Function
а также with
, но это можно сделать следующим образом: http://jsfiddle.net/pimvdb/72GwE/13/.
function trigger(elem, name, e) {
var func = new Function('e',
'with(document) {'
+ 'with(this) {'
+ elem.getAttribute('on' + name)
+ '}'
+ '}');
func.call(elem, e);
}
Со следующим HTML:
<input type="text" oncustombind="console.log(e, type, getElementById);" id="x">
затем вызвать событие как:
trigger(document.getElementById('x'), 'custombind', {foo: 123});