[JS] Dynamisch contextmenu afhankelijk van object

Pagina: 1
Acties:

  • StarLite
  • Registratie: Januari 2000
  • Laatst online: 01-12-2025

StarLite

'ON ERROR RESUME NEXT

Topicstarter
Ik zit al een tijdje te worstelen met een javascript probleem.
Ik ben bezig met een webapplicatie en ik probeer een contextmenu / rechtermuisknopmenu aan de praat te krijgen.
Het menu werkt op zich en het tonen van het menu met de rechtermuisknop is geen probleem, er zijn genoeg voorbeelden te vinden op internet. Alleen hebben AL die voorbeelden 1 probleem: Ze triggeren op document.contextmenu of een variant erop, ik krijg dus altijd hetzelfde menu waar ik ook klik op de pagina.
Ik wil de opties in mijn contextmenu laten afhangen van het object waar ik op klik [een link, image, div etc]. Ook wil ik dat er geen contextmenu getond word [of eventueel het standaard contextmenu] als ik op een leeg stuk pagina klik.

Ik heb op het moment de volgende code:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var ie  = document.all
var ns6 = document.getElementById&&!document.all

var isMenu  = false ;

var menuSelObj = null ;
var overpopupmenu = false;

function mouseSelect(e)
{
    var obj = ns6 ? e.target.parentNode : event.srcElement.parentElement;

    if( isMenu )
    {
        if( overpopupmenu == false )
        {
            isMenu = false ;
            overpopupmenu = false;
            document.getElementById('menudiv').style.display = "none" ;
            return true ;
        }
        return true ;
    }
    return false;
}

// POP UP MENU
function    ItemSelMenu(e)
{
    var obj = ns6 ? e.target.parentNode : event.srcElement.parentElement;   

    menuSelObj = obj ;
    if (ns6)
    {
        document.getElementById('menudiv').style.left = e.clientX+document.body.scrollLeft;
        document.getElementById('menudiv').style.top = e.clientY+document.body.scrollTop;
    } else
    {
        document.getElementById('menudiv').style.pixelLeft = event.clientX+document.body.scrollLeft;
        document.getElementById('menudiv').style.pixelTop = event.clientY+document.body.scrollTop;
    }
    document.getElementById('menudiv').style.display = "";
    isMenu = true;
    return false ;
}

document.onmousedown    = mouseSelect;
document.oncontextmenu  = ItemSelMenu;    

Hoe kan ik zorgen dat .omcontextmenu ALLEEN gefired word als ik op een bepaald object klik?

HTML:
1
<div onClick="agn_click(46,'22:30','23:00','0','2006-05-25 00:00:00');" class="div_agenda_apps" id="freetime" onContextMenu="ItemSelMenu">&nbsp;</div>


Doet niks en als ik er:
HTML:
1
<div onClick="agn_click(46,'22:30','23:00','0','2006-05-25 00:00:00');" class="div_agenda_apps" id="freetime" onContextMenu="ItemSelMenu();">&nbsp;</div>

van maak, dan krijg ik als error: "Error: e has no properties"

Hoe kan ik zorgen dat ik per object op mijn pagina een rightclick kan afvangen?

tyrips, tywreps, tiewreps, tiereps, tie raps, ripties, taiwraps, kabelbindbandjes » Tie Wraps
\o/


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 17-02 09:21
Je kunt toch gewoon afvangen wat voor opject het aangeklikte object is?
Ik meen dat er iets is als getElementByXY waarin je de coördinaten van de muisaanwijzer kunt stoppen

//Edit
Vrees dat dat een custom functie geweest is, kan er nergens iets over vinden :X

//Edit
Ohneej, gevonden :)
document.elementFromPoint(x,y)
<script>
document.onmousemove = start;
function start(e)
{
var obj = document.elementFromPoint(event.clientX, event.clientY);
document.title = obj.tagName;
}
</script>

[ Voor 114% gewijzigd door frickY op 25-05-2006 14:35 ]


  • StarLite
  • Registratie: Januari 2000
  • Laatst online: 01-12-2025

StarLite

'ON ERROR RESUME NEXT

Topicstarter
Hmzz, das wel een goeie

Ik krijg met
JavaScript:
1
2
var obj = ns6 ? e.target.parentNode : event.srcElement.parentElement;   
alert(obj.getAttribute('class'));

al zinnige dingen terug :)

[ Voor 36% gewijzigd door StarLite op 25-05-2006 14:31 ]

tyrips, tywreps, tiewreps, tiereps, tie raps, ripties, taiwraps, kabelbindbandjes » Tie Wraps
\o/


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 17-02 09:21
Met de functie die ik in mn vorige post noemde (zie 2de edit) hoef je je oncontextmenu alleen maar in je body tag (of je document object) te hangen. Daarin kun je dan afvangen welk object is aangeklikt, en of en welk contextmenu je daarbij wilt tonen.