MozillaPL.org - polskie centrum Mozilli

Główne menu:

prefBranches w JS

Projektowanie aplikacji i rozszerzeń opartych na technologiach Mozilla Foundation: XUL, JavaScript, XPCOM, XBL i innych

Moderator: Pomocy?!

Postautor: Ancestor » 07 stycznia 2007, 21:49

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

Mniej więcej, ale lepiej nie dodawać nie nasłuchiwać DOMContentLoaded, ale load i nie na window, ale bezpośrednio na elemencie <tabbrowser/>

Tak więc:
Kod: Zaznacz cały
// musimy zaczekać na załadowanie okna, bo na początku tabbrowser jeszcze nie istnieje
window.addEventListener('load', init, false);

function moje_init() {
 gBrowser.addEventListener('load', nowa, false);
}

...

Tylko pod żadnym pozorem nie używaj nazwy init dla tej funkcji, bo powoduje to konflikty z innymi rozszerzeniami, bo oczywiście każdy tak to nazywa. Albo do wszystkich funkcji dawaj prefiks np. nazwę swojego rozszerzenia albo najlepiej stwórz własny obiekt w którym wszystko zawrzesz.
Ancestor
Moderator
 
Posty: 1799
Z nami od: 11 czerwca 2005, 20:25
Lokalizacja: Sopot

Postautor: Gość » 07 stycznia 2007, 22:04

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

OK wielkie dzięki, teraz działa :)
A znasz się na wyrażeniach regularnych tak dobrze jak na pisaniu rozszerzeń? Bo przydałaby mi się pomoc:
http://mozillapl.org/forum/about-28189.html

:P
Gość
 

Postautor: Ancestor » 07 stycznia 2007, 22:31

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

Anonymous pisze:OK wielkie dzięki, teraz działa :)
A znasz się na wyrażeniach regularnych tak dobrze jak na pisaniu rozszerzeń?

Nie :P
Ancestor
Moderator
 
Posty: 1799
Z nami od: 11 czerwca 2005, 20:25
Lokalizacja: Sopot

Postautor: Gość » 07 stycznia 2007, 22:52

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

OKi :P
Mam przy okazji jeszcze jeden problem, mianowicie mam coś takiego w źródle strony:

Kod: Zaznacz cały
<td><input type="text" value="" name="nazwa" /><script type="text/javascript"> document.formular.nazwa.focus();</script></td>


I wydaje mi się, że ten JS blokuje możliwość wpisania koordów przez rozszerzenie poprzez setAttribute, bo na innych inputach normalnie działa.
Da się to obejść ?
Gość
 

Postautor: Gość » 07 stycznia 2007, 23:35

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

Hmm a czy można w listenerze, zrobić tak by wywoływana funkcja wysyłałą jeszcze jeden argument prócz event, który jest zdefiniowany powyżej ?

Kod: Zaznacz cały
addEventListener('mylistener', initFunctions, true);


Jeżeli zamienie na initFunctions(arg) to w konsoli wyrzuca mi, że event has no properties (bo event'a wykorzystuje w initFunctions do określenia jaką wartość przybrał (event.target.value).
Gość
 

Postautor: Ancestor » 08 stycznia 2007, 00:32

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

Tu właśnie mamy dobry przykład na elastyczność i siłę JavaScriptu:
Kod: Zaznacz cały
function evtHandler(event) {
  initFunctions(event, my_arg);
}
addEventListener('mylistener', evtHandler, true);

Wyjaśnienie:
http://developer.mozilla.org/en/docs/A_ ... _functions

Alternatywą jest oczywiście ucznienie z my_arg zmiennej globalnej.

BTW, nie ustawiaj ostatniego parametru addEventListener na true, jeśli nie jest to potrzebne. Capture używaj tylko wtedy, kiedy wiesz, że tego potrzebujesz.
Ancestor
Moderator
 
Posty: 1799
Z nami od: 11 czerwca 2005, 20:25
Lokalizacja: Sopot

Postautor: Gość » 08 stycznia 2007, 10:10

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

Hmm ten sposób za bardzo mi nie odpowiada...

Alternatywą jest oczywiście ucznienie z my_arg zmiennej globalnej.

Za to ten jak najbardziej.
Tzn czy chodzi Ci o to:

Kod: Zaznacz cały
var zmiennaGlobalna = '';

addEvenListener...
function evtHandler(event) // wywolywana przez listenerea
{
var cos = "xxxx";
zmiennaGlobalna = cos;
}


?
Gość
 

Poprzednia

Wróć do Programowanie z użyciem technologii Mozilli

Kto jest online

Zarejestrowani użytkownicy: Bing [Bot], dexter, Google [Bot], KrystianK

Przejdź do powiązanej strony

Nawigacja:

Stopka: