Eredmény: 1 - 6 (6) összesen

Téma: Egyedi ContextMenu Pozícióhiba

  1. #1
    Törzsvendég
    Csatlakozott
    14-08-02
    Hozzászólás
    145
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Kérdés Egyedi ContextMenu Pozícióhiba

    Sziasztok!

    Az lenne a problémám, hogy van egy egyedi jobb klikk menü.
    HTML kód:
    <html onclick="HideMenu('elementid');" oncontextmenu="ShowMenu('elementid',event); return false;">
    HTML kód:
    <script>function ShowMenu(control, e) {     var posx = e.clientX + 'px';     var posy = e.clientY + 'px';     document.getElementById(control).style.position = 'absolute';     document.getElementById(control).style.display = 'inline';     document.getElementById(control).style.left = posx;     document.getElementById(control).style.top = posy; } function HideMenu(control) { document.getElementById(control).style.display = 'none'; }</script>
    Viszont, ha a képernyő alján kattint a felhasználó, akkor a <div id="elementid"></div> "lejjeb" csúszik, és megjelenik a scrollbar, vagyis megnő az oldal.

    Hogyan lehet azt, hogy ha a képernyő aljától Xpx-re van, akkor ne lefelé mutassa, hanem felfelé? Tehát mint a valós jobb katt menü.

    Norbi




  2. #2
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.784
    Begyűjtött 863 köszönetet
    659 hozzászólásával

    Alapbeállítás re: Egyedi ContextMenu Pozícióhiba

    Annyira nem értem, hogy sok-sok ilyen téma után miért nem tudod még mindig érdemben betördelni a kódot? Ugye nem várod el, hogy ezt az egy soros valamit bárki is érdemben átnézze?

    Amúgy ha jól értem amit akarsz, meg kell nézni, hogy ahova kattintott + a div magassága több-e mint az oldal magassága. Ha igen, akkor fölfelé jelenik meg, ha nem, akkor lefelé.



  3. Az alábbi felhasználók hálásak a válaszért:

    Norbii (2015-10-31)

  4. #3
    Törzsvendég
    Csatlakozott
    14-08-02
    Hozzászólás
    145
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Alapbeállítás re: Egyedi ContextMenu Pozícióhiba

    Igen, körülbelül ezt szeretném

    Az oldal kiszedte a tördelést. Volt.
    HTML kód:
    <html onclick="HideMenu('elementid');" oncontextmenu="ShowMenu('elementid',event); return false;">
    ...
    <script>
    function ShowMenu(control, e) {
         var posx = e.clientX + 'px';
         var posy = e.clientY + 'px';
         document.getElementById(control).style.position = 'absolute';
         document.getElementById(control).style.display = 'inline';
         document.getElementById(control).style.left = posx;
         document.getElementById(control).style.top = posy;
    }
    function HideMenu(control) {
         document.getElementById(control).style.display = 'none';
    }
    </script>
    Tehát, azt nem tudom, hogyan lehet azt:
    Ha ahová kattintott, az nagyobb, mint az oldal magassága mínusz div magassága, akkor felfelé mutassa.
    Ha ahová kattintott, az nagyobb, mint az oldal szélessége mínusz div szélessége, akkor balra mutassa.
    Tehát teljesen olyan legyen mint a sima jobb klikk menü a böngészőben.

    Egyszerűen nem találtam rá megoldást sehol a neten. Pedig kerestem.


    Utoljára módosítva: Norbii által : 2015-10-30 22:51

  5. #4
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.784
    Begyűjtött 863 köszönetet
    659 hozzászólásával

    Alapbeállítás re: Egyedi ContextMenu Pozícióhiba

    Hát nem kereshettél túl erősen azért.

    Javascript klikkelés helye (ezt amúgy jelezném, hogy egy az egyben ott van a kódodban is):
    https://www.google.hu/search?q=javascript+click+postion

    Belső ablak magassága:
    https://www.google.hu/search?q=javascript+inner+height

    Elágazi szerkezetet meg kivonást gondolom már azért tudsz írni...



  6. Az alábbi felhasználók hálásak a válaszért:

    Norbii (2015-10-31)

  7. #5
    Törzsvendég
    Csatlakozott
    14-08-02
    Hozzászólás
    145
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Villanykörte re: Egyedi ContextMenu Pozícióhiba

    Emphus te egy isten vagy
    Sikerült összehoznom

    HTML kód:
    function ShowMenu(control, e) {
        var posx = e.clientX;
        var posy = e.clientY;
        var w = $(document).width();
        var h = $(document).height();
        var cw = 216;
        var ch = 221;
        w = w-cw;
        h = h-ch;
        if (posx > w) {
            var x = 5;
            posx = posx-cw-x;
        }
        if (posy > h) {
            posy = posy-ch;
        }
        posx = posx + "px";
        posy = posy + "px";
        document.getElementById(control).style.position = 'absolute';
        document.getElementById(control).style.display = 'inline';
        document.getElementById(control).style.left = posx;
        document.getElementById(control).style.top = posy;
    }

    A JQuery-s $(document).width() és $(document).height() az kicserélhető DOM-ra?


    Utoljára módosítva: Norbii által : 2015-10-31 10:34

  8. #6
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.784
    Begyűjtött 863 köszönetet
    659 hozzászólásával

    Alapbeállítás re: Egyedi ContextMenu Pozícióhiba

    Isten? Mert lefordítottam három szót angolra, és beírtam Google-be? Hát, hallod, te tényleg nagyon nem tudsz keresni, már ne haragudj.

    Idézet Norbii eredeti hozzászólása Hozzászólás megtekintése
    A JQuery-s $(document).width() és $(document).height() az kicserélhető DOM-ra?
    Ezt a kérdést nem igazán értem (/tarom értelmesnek).

    Amúgy: nem érdemes hard codeolni a div szélességét és magasságát, azt is le tudod kérdezni JS-sel.
    Az ilyeneknek meg semmi értelme:

    var x = 5;
    posx = posx-cw-x;

    Ehelyett lehetne ilyet írni pl.:
    posx = posx-cw-5;

    Semmivel nem átláthatatlanabb, sőt, és még fölös változókat sem hozol létre. Ebből még van pár a kódodban.



  9. Az alábbi felhasználók hálásak a válaszért:

    Norbii (2015-10-31)

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •