собственное событие
Хотел начать эту тему приблизительно так - "я немного понимаю", но сам подумал и посмеялся, что тогда надо писать - "хот нэмного понымаю". я вообще не понимаю 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, время: 11:43. |