Wikipedysta:Persino/Gadget-DodatkiSkrypt3.js/Zdarzenia.js

Z Wikibooks, biblioteki wolnych podręczników.

Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
/*Funkcja zdarzeń odrejestrowania i rejestrowania*/
EventTarget.prototype._listeners = EventTarget.prototype._listeners||{};

/*Funkcja własna zdarzeń*/
EventTarget.prototype._addEventListener = EventTarget.prototype._addEventListener||EventTarget.prototype.addEventListener;
EventTarget.prototype._removeEventListener = EventTarget.prototype._removeEventListener||EventTarget.prototype.removeEventListener;

EventTarget.prototype.addEventListener = function(type, func, useCapture) {
	useCapture=((typeof useCapture == "boolean")?useCapture:false);
	
    if (typeof type !== 'undefined' && typeof func !== 'undefined' && type && func) {

        this._listeners[type] = this._listeners[type] ? this._listeners[type] : new Array();

        this._listeners[type].push({
            func: func,
            capture: useCapture
        });
        this._addEventListener(type, func, useCapture);
    }
}
EventTarget.prototype.removeEventListener = function(type, func, useCapture) {
	useCapture=((typeof useCapture == "boolean")?useCapture:false);
	
    if (typeof type !== 'undefined' && typeof func !== 'undefined' && type && func) {
        if (Array.isArray(this._listeners[type])) {

            this._listeners[type] = this._listeners[type].filter(function(event){
                return ((event.func != func) || (event.capture != useCapture));
            });

        }
        this._removeEventListener(type, func, useCapture);
    }
}

EventTarget.prototype.getEventListeners = function(type) {
    return type ? this._listeners[type] || [] : this._listeners || {};
}
EventTarget.prototype.copyEventListenersFrom = function(element) {
    var eventsTypes=element.getEventListeners();
    for(var eventType in eventsTypes){
        eventsTypes[eventType].forEach(function(event){
            this.addEventListener(eventType, event.func, event.capture);
        });
    };
}
EventTarget.prototype.removeEventType=function(type){
	var eventType = this.getEventListeners(type);
	eventType.forEach(function(event){
		this.removeEventListener(type, event.func, event.capture);
	});
}
/*Koniec funkcji zdarzeń*/
DodatkiSkrypt.Zdarzenia=new Array();
DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript=function(css,zdarzenie,funkcja_zdarzen_1,funkcja_zdarzen_2,nowe_DodatkiSkrypt,stare_DodatkiSkrypt,tylko_odrejestruj,__FUNKCJA){
	/*
	css - adres html obiektu,
	zdarzenie - zdarzenie jak click,
	funkcja_zdarzen_1 - nazwa pierwszej funkcji zdarzeń w starej przestrzeni DodatkiSkrypt lub nowej, jak StickyXY,
	funkcja_zdarzen_2 - nazwa drugiej funkcji zdarzeń w starej przestrzeni DodatkiSkrypt lub nowej, jak StickyXY,
	nowe_DodatkiSkrypt	- nowa zmienna tablicy, gdy go podano, gdy nie podano jej, to przyjmuje wartość: DodatkiSkrypt,
	stare_DodatkiSkrypt - stara zmienna tablicy, gdy go podano, gdy nie podano jej, to przyjmuje wartość: DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks,
	tylko_odrejestruj - czy tylko zdarzenie ma odrejestrować w starej przestrzeni: stare_DodatkiSkrypt, zwykle: DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks.
	*/
	/*Ustalenie nowej tablicy, zwykle DodatkiSkrypt*/
	nowe_DodatkiSkrypt=nowe_DodatkiSkrypt||DodatkiSkrypt;
	/*Ustalenie starej tablicy, zwykle stare DodatkiSkrypt*/
	stare_DodatkiSkrypt=stare_DodatkiSkrypt||DodatkiSkrypt_zmienna_z_MediaWiki_Wikibooks;
		
	var tab_zd={
		 'hover':new Array('mouseenter','mouseleave')
	};
		
	function ElementZdarzenia(element){
		if((element)&&(zdarzenie)&&((funkcja_zdarzen_1||funkcja_zdarzen_2))){
			/*Odrejestrowanie zdarzeń przy pomocy funkcji nazwie: funkcja_zdarzen_1 i ewentualnie funkcja_zdarzen_2, ale ze starej przestrzeni DodatkiSkrypt, jak: DodatkiSkrypt.StickyXY*/
    		if((stare_DodatkiSkrypt)&&((funkcja_zdarzen_1&&stare_DodatkiSkrypt[funkcja_zdarzen_1])||(funkcja_zdarzen_2&&stare_DodatkiSkrypt[funkcja_zdarzen_2]))){
    			var element_zd=tab_zd[zdarzenie]
    			if(element_zd){
    				if(element_zd[0])$(element).off(element_zd[0],funkcja_zdarzen_1?stare_DodatkiSkrypt[funkcja_zdarzen_1]:undefined);
    				if(element_zd[1])$(element).off(element_zd[1],funkcja_zdarzen_2?stare_DodatkiSkrypt[funkcja_zdarzen_2]:undefined);
    			}else{
    				$(element).off(zdarzenie,funkcja_zdarzen_1?stare_DodatkiSkrypt[funkcja_zdarzen_1]:undefined);
    			}
    		}
    		if((!tylko_odrejestruj)&&(nowe_DodatkiSkrypt)&&((funkcja_zdarzen_1&&nowe_DodatkiSkrypt[funkcja_zdarzen_1])||(funkcja_zdarzen_2&&nowe_DodatkiSkrypt[funkcja_zdarzen_2]))){
   				/*Rejestrowanie zdarzeń, używając funkcji: funkcja_zdarzen_1 i ewentualnie funkcja_zdarzen_2, ale z nowej przestrzeni DodatkiSkrypt, jak DodatkiSkrypt.StikcyXY*/
   				if(tab_zd[zdarzenie]){
	   				$(element)[zdarzenie](funkcja_zdarzen_1?nowe_DodatkiSkrypt[funkcja_zdarzen_1]:undefined,funkcja_zdarzen_2?nowe_DodatkiSkrypt[funkcja_zdarzen_2]:undefined);
   				}else{
   					$(element).on(zdarzenie, funkcja_zdarzen_1?nowe_DodatkiSkrypt[funkcja_zdarzen_1]:undefined);
   				}
   			}
    	}
	}
			
	$(css).each(function(i,element){
		if(__FUNKCJA){var wynik=__FUNKCJA(i,element);if(wynik){return;};}
		/*Odrejestrowanie i zarejestrowanie zdarzeń*/
		ElementZdarzenia(element);
    });
}
	
/*Definicje dodatkowych zdarzeń do DodatkiSkrypt.StickyXY i DodatkiSkrypt.OptimalXY*/
DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScriptDodatkoweFunkcyjneXY=function(css,fun_zdarz,z_mouse,nowe_DodatkiSkrypt,stare_DodatkiSkrypt,tylko_odrejestruj,__FUNKCJA){
	/*Zdarzenia dodatkowe - odrejestrowanie wcześniejszych zdarzeń i rejestrowanie następnych*/
	var tab_transition={'start':true,'run':true,'cancel':true,'end':true};
	var tab_przegladarki={'':true,'webkit':true,'moz':true,'o':true};
	for(var a in tab_transition){
   		for(var b in tab_przegladarki){
   			var zdarzenie=b+'transition'+a;
   			DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript(css,zdarzenie,fun_zdarz,undefined,nowe_DodatkiSkrypt,stare_DodatkiSkrypt,tylko_odrejestruj,__FUNKCJA);
   		}
	}
	if(z_mouse){
		DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript(css,"hover",fun_zdarz,fun_zdarz,nowe_DodatkiSkrypt,stare_DodatkiSkrypt,tylko_odrejestruj,__FUNKCJA);
	}
};
/*Koniec dodatkowych zdarzeń*/