Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS/DHTML] Menu
Forum PHP.pl > Forum > Po stronie przeglądarki
Babcia@Stefa
Witam, posiadam gotowy kod który zamienia menu kontekstowe, zmodyfikowałem go tak aby tworzył rozwijane menu, ale w FireFoxie jest ono zawsze w lewym górnym rogu ekranu.

Myślę że ten fragment odpowiada za pozycję na ekranie:
  1. <?php
  2. IsMenu = 'yes';
  3. //Find out how close the mouse is to the corner of the window
  4. var rightedge= window.innerWidth-e.clientX;
  5. var bottomedge= window.innerHeight-e.clientY;
  6.  
  7. //if the horizontal distance isn't enough to accomodate the width of the context menu
  8. if (rightedge<menuobj.offsetWidth)
  9. //move the horizontal position of the menu to the left by it's width
  10. menuobj.style.left=ie5? document.body.scrollLeft+e.clientX-menuobj.offsetWidth : window.pageXOffset+e.clientX-menuobj.offsetWidth;
  11. else
  12. //position the horizontal position of the menu where the mouse was clicked
  13. menuobj.style.left=ie5? document.body.scrollLeft+e.clientX : window.pageXOffset+e.clientX;
  14.  
  15. //same concept with the vertical position
  16. if (bottomedge<menuobj.offsetHeight)
  17. menuobj.style.top=ie5? document.body.scrollTop+e.clientY-menuobj.offsetHeight : window.pageYOffset+e.clientY-menuobj.offsetHeight;
  18. else
  19. menuobj.style.top=ie5? document.body.scrollTop+e.clientY : window.pageYOffset+e.clientY;
  20.  
  21. menuobj.style.visibility="visible";
  22. return false;
  23. ?>


Co w nim jest nie tak?

Pozdrawiam, WebNuLL(Babcia@Stefa)
WebCM
Użyj poniższego kodu do przechwytywania pozycji kursora:
  1. <?php
  2. document.onmousedown = function(e)
  3. {
  4. if(e)
  5. {
  6. cx = e.pageX;
  7. cy = e.pageY
  8. }
  9. else
  10. {
  11. cx = event.clientX + document.body.scrollLeft;
  12. cy = event.clientY + document.body.scrollTop
  13. }
  14. if(cx<0) cx=0;
  15. if(cy<0) cy=0
  16. };
  17. ?>
Zmienne cx i cy zawierają współrzędne kursora. Są uaktualniane po wciśnięciu przycisku myszy. Lepszym wyjściem jest pobranie współrzędnych przycisku (ze względu na różnice między przeglądarkami może być to trudne, ale warto wtedy posłużyć się niezawodną funkcją alert() do debuggingu) wyświetlającego menu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.