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
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é.
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.
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...
re: Egyedi ContextMenu Pozícióhiba
Emphus te egy isten vagy :D
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?
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. :D
Idézet:
Norbii eredeti hozzászólása
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.