MozillaPL.org - polskie centrum Mozilli

Główne menu:

Jak wywołać zdarzenie ? wyświetlenia menu kontekstowego

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

Moderator: Pomocy?!

Jak wywołać zdarzenie ? wyświetlenia menu kontekstowego

Postautor: Artur B. » 05 sierpnia 2007, 14:30

Przeglądarka: Opera/9.20 (Windows NT 5.1; U; pl)

Witam.

Chciał bym sie dowiedzie, jak można wywołać zdarzenie które wyświetli menu kontekstowe ?

Jeśli sie nie mylę, to to "popupshowing" zdarzenie za to odpowiada tylko jak samemu go wywołać poprzez jakieś inne zdarzenie ? np. onclick

Z Góry Dziekuję.
Pozdrawiam.
Artur B.
 

Postautor: Ancestor » 05 sierpnia 2007, 17:33

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

Zgadza się, zdarzenie popupshowing informuje o otwarciu popupa. Jednak mylisz skutek i przyczynę: to zdarzenie jest wysłane, gdy popup został pokazany, a nie odwrotnie. Dlatego ręczne wysyłanie zdarzenia nie jest sposobem na otwarcie popupa (nie wiem nawet, czy dałoby to jakiś efekt).

Prawidłowym sposobem pokazania popupa jest skorzystanie z metody showPopup.
Ancestor
Moderator
 
Posty: 1799
Z nami od: 11 czerwca 2005, 20:25
Lokalizacja: Sopot

Postautor: pack » 28 września 2007, 16:49

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

Witam.

Też chciałem coś takiego zrobić, ale niestety mi nie działa :(

Dobrze jest ten kod zrobiony ?

Kod: Zaznacz cały
gBrowser.showPopup(document.getElementById("contentAreaContextMenu"), e.screenX + 6, e.screenY + 6, "context", "bottomright","bottomright");
pack
 

Postautor: Ancestor » 28 września 2007, 18:10

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

pack pisze:Witam.

Też chciałem coś takiego zrobić, ale niestety mi nie działa :(

Dobrze jest ten kod zrobiony ?

Kod: Zaznacz cały
gBrowser.showPopup(document.getElementById("contentAreaContextMenu"), e.screenX + 6, e.screenY + 6, "context", "bottomright","bottomright");

Nie, pomieszałeś argumenty. showPopup jest metodą przypisaną do elementu menupupup.
Kod: Zaznacz cały
var menupoup = document.getElementById("contentAreaContextMenu");
menupopup.showPopup(gBrowser, ....
Ancestor
Moderator
 
Posty: 1799
Z nami od: 11 czerwca 2005, 20:25
Lokalizacja: Sopot

Postautor: pack » 28 września 2007, 18:27

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

Hmm

To co powinno być w pierwszym parametrze metody showPopup() ? jaki element w przypadku kiedy chcę wyświetlić główne menu kontekstowe ?.

Czyli:
Kod: Zaznacz cały
var menu = document.getElementById("contentAreaContextMenu"); // to chcę wyświetlić;

menu.showPopup( /* co w takim razie powinienem tutaj dać ? */,
e.screenX + 6, e.screenY + 6, "context", "bottomright","bottomright");



Dziękuję.
pack
 

Postautor: Ancestor » 28 września 2007, 19:02

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

Zgodnie z dokumentacją:
There are two ways of specifying where the popup appears, either at a specific screen position, or relative to some element in the window. If either x or y are set to values, the popup will appear at the screen coordinate (x,y). If x and y are -1, the popup will be positioned relative to the element specified as the first argument.

Miejsce, w którym ma zostać otwarty popup określasz przez przez podanie albo współrzędnych x i y albo elementu. W tym drugim przypadku jako x i y podajesz -1. Pierwszym parametrem jest więc element, względem którego ma zostać otwarty popup - w twoim przypadku prawdopodobnie jakiś element na stronie.
Ancestor
Moderator
 
Posty: 1799
Z nami od: 11 czerwca 2005, 20:25
Lokalizacja: Sopot

Postautor: pack » 28 września 2007, 20:21

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

No racja....

Ale działa do momentu kliknięcia PPM (wyświetlenie menu kontekstowego), po tym kliknięciu moje menu kontekstowe wyświetla się w innej pozycji ;/ ale to jest chyba bug bo znalazłem to:
https://bugzilla.mozilla.org/show_bug.cgi?id=195191

Szkoda...
pack
 

Postautor: Ancestor » 28 września 2007, 22:40

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

Bug jest RESOLVED INVALID, czyli wszystko działa, jak powinno. Możesz opisać krok po kroku, co się dzieje?
Ancestor
Moderator
 
Posty: 1799
Z nami od: 11 czerwca 2005, 20:25
Lokalizacja: Sopot

Postautor: pack » 29 września 2007, 20:41

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

1. Przechwytuję zdarzenie dblclick
2. Tutaj funkcja która to zdarzenie obsługuje
Kod: Zaznacz cały
function dblClick(e) {
    var contextMenu = document.getElementById("contentAreaContextMenu")      
   contextMenu.showPopup(contextMenu, e.screenX + 6, e.screenY + 6, "context", "bottomleft","topleft");
}

3. Uruchamiam FF, klikam x2 LPM (czyli dblclick) i jest dobrze, czyli menu kontekstowe wyświetla się w tym miejscu, w którym kliknąłem 2x:
Obrazek

4. Klikam PPM gdziekolwiek
5. Ponownie klikam 2x LPM i menu kontekstowe teraz się pojawia w takiej pozycji (kliknąłem tam gdzie jest kursor myszy rzecz jasna):
Obrazek
6. Ponowne uruchomienie FF dopiero to naprawia - do momentu kliknięcia PPM.


Dzięki.
Pozdrawiam.
pack
 

Postautor: pack » 03 października 2007, 21:36

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

Nikt nie zna rozwiązania ? :cry:
pack
 


Wróć do Programowanie z użyciem technologii Mozilli

Kto jest online

Zarejestrowani użytkownicy: Baidu [Spider], Google [Bot]

cron
Przejdź do powiązanej strony

Nawigacja:

Stopka: