Javascript-форум (https://javascript.ru/forum/)
-   Мобильный JavaScript (https://javascript.ru/forum/mobile/)
-   -   Верное использование removeEventListener (https://javascript.ru/forum/mobile/61370-vernoe-ispolzovanie-removeeventlistener.html)

Leif 15.02.2016 14:10

Верное использование removeEventListener
 
Всем привет !
Есть скрипт, в котором использовалось addEventListener для того, чтобы при клике экрану браузер перешел в режим фуллскрин
function js_init()
{   
    var canvas = document.getElementById("canvas"); 
    
    canvas.addEventListener("mousedown",
        function(evt)
        {
            evt.preventDefault();
            gmCallback.jsCallback_onPointerDown(-1, evt.pageX, evt.pageY);
			
            console.log("mouse down");
            
        }, true);
        
    canvas.addEventListener("touchstart",
        function(evt)
        {
            evt.preventDefault();

            // Pro kazdy prst volat mousePressed
            var touchId = evt.changedTouches.length;

            while (touchId-- !== 0)
            {
                var touch = evt.changedTouches[touchId];
                gmCallback.jsCallback_onPointerDown(touch.identifier, touch.pageX, touch.pageY);
				
            }                        
        }, true);
}



После перехода понадобилось убрать слушателя и я дописал код:
function js_deinit()
{   
    var canvas = document.getElementById("canvas"); 
    
    canvas.removeEventListener("mousedown",
        function(evt)
        {
            evt.preventDefault();
            gmCallback.jsCallback_onPointerDown(-1, evt.pageX, evt.pageY);
			
            console.log("mouse down");
            
        }, true);
        
    canvas.removeEventListener("touchstart",
        function(evt)
        {
            evt.preventDefault();

            // Pro kazdy prst volat mousePressed
            var touchId = evt.changedTouches.length;

            while (touchId-- !== 0)
            {
                var touch = evt.changedTouches[touchId];
                gmCallback.jsCallback_onPointerDown(touch.identifier, touch.pageX, touch.pageY);
				
            }                        
        }, true);
}


Но вызов функции js_deinit() не привел к результатам
И код (ниже) тоже не помог
function js_deinit()
{   
    var canvas = document.getElementById("canvas"); 
    
    canvas.removeEventListener("mousedown",0, true);  
    canvas.removeEventListener("touchstart",0, true);
}



Скажите, что я делаю не так ? Как правильно убрать слушателя ?

destus 15.02.2016 14:22

Дайте осмысленное название в теле функции addEventListener и будет вам счастье.

Например,
function myFunc(){
 /* что-то делаем */
}
canvas.addEventListener("mousedown",myFunc);
canvas.removeEventListener("mousedown",myFunc);

Leif 15.02.2016 15:37

Спасибо, счастье есть ))


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