Wikipedysta:Persino/Gadget-DodatkiSkrypt3.js/Zdarzenia.js
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ń*/