собственное событие
Хотел начать эту тему приблизительно так - "я немного понимаю", но сам подумал и посмеялся, что тогда надо писать - "хот нэмного понымаю". я вообще не понимаю js , он похож немного на то с чем я знаком, но это только на первый взгляд. По этому я прошу помочь мне разобраться.
Первым делом посмотрел в учебнике, но там очень мало и в основном на каком то jQuery. С начала я обрадовался тому, что там на первый взгляд просто и Кросбраузерно, но потом почитал и так и не понял, работает он в чистом js или только js + html. По этому я стал искать дальше и нашёл примеры, которые мне знакомы по принципу, но как их правильно написать я не знаю. Вот как предлагают создавать само событие:
function CustomEvent ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
var event = document.createEvent( 'CustomEvent' );
event.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return event;
}
Теперь как бы нужно создать обьект и начать слушать...
var obj = {};
obj.addEventListener("cat", foo);
function foo(e)
{
console.log('events')
}
dispatchEvent(new CustomEvent("cat"));
И я понимаю на сколько это будет смешно и нелепо, для того кто знает как правильно писать, но я вижу это так как написал выше. Что не так? Что нужно подправить? |
Осилил, может кому то вроде меня поможет :
function MyEvents()
{
function TestEvent ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined};
var e = document.createEvent( 'CustomEvent' );
e.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return e;
}
var obj = addEventListener("test", testHandler);
function testHandler(e)
{
console.log(e.type , e.detail);
}
this.test = function( $e ,$detail)
{
dispatchEvent( new TestEvent( $e ,{ bubbles: false, cancelable: false, detail: $detail} ) );
}
}
|
Чистые объекты не реализуют интерфейс EventTarget, который нужен для генерации событий и подписки на них. Этот интерфейс реализован только для DOM-элементов.
|
| Часовой пояс GMT +3, время: 16:23. |