Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   собственное событие (https://javascript.ru/forum/misc/39645-sobstvennoe-sobytie.html)

riva 07.07.2013 01:03

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

И я понимаю на сколько это будет смешно и нелепо, для того кто знает как правильно писать, но я вижу это так как написал выше. Что не так? Что нужно подправить?

riva 07.07.2013 01:54

Осилил, может кому то вроде меня поможет :
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} ) );
    }

}

danik.js 07.07.2013 12:13

Чистые объекты не реализуют интерфейс EventTarget, который нужен для генерации событий и подписки на них. Этот интерфейс реализован только для DOM-элементов.


Часовой пояс GMT +3, время: 11:43.