[JS] Context menu tegenhouden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xoniq
  • Registratie: April 2005
  • Laatst online: 18-09 18:37
Goedenavond GoT'ers,

Ik ben bezig met een 'custom context-menu' script.
Het lukt mij om via JS te reageren op de rechter muisknop, maar vervolgens laat de browser wel zijn eigen context menu zien.
Hoe kan ik dit tegen gaan?

Wat ik nu heb:

code:
1
2
3
4
5
6
7
8
9
10
function showContext( event , menuID ){
    // Internet Explorer
    if (event.which == null && event.button == 3 ){
        alert( 'Klik' );
    // FireFox etc.
    }else if( event.which == 3 ){
        alert( 'Klik' );
    }
    return false;
}


code:
1
2
3
4
5
6
menuItem.addEvent( 'mouseup' , function( e ){
    if( menuItem.id.substring( 0 , 5 ) == 'item_' ){
        showContext( e.event , menuItem.id.replace( 'item_' , '' ) );
        return false;
    }
});


Hoe kan ik ervoor zorgen dat zodra de alert voorbij is, de context menu niet wordt getoond?

En dan nog een vraagje...
De code werkt niet in IE, gaat fout op:

menuItem.addEvent( 'mouseup' , function( e ){

Alleen debuggen via IE is zo heerlijk lastig...

Bedankt!

Acties:
  • 0 Henk 'm!

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 13-09 17:10
Je bent op dit moment met het mouseup event aan het werk, waarom? In HTML zelf zit het "contextmenu" event (Quirksmode), hiermee kun je prima menu's maken. "mouseup" zou je eventueel kunnen gebruiken als een soort alternatief voor de functionaliteit in Opera, ondanks dat je het standaard menu niet zult kunnen uitschakelen. Die gebruikersgroep ga je dus waarschijnlijk missen. Voor een goed overzicht van de ondersteuning kun je op Quirksmode terecht.

De standaard actie van de browsers (het tonen van de eigenlijke context-menu's) kan je annuleren via "preventDefault". Dit is een methode op het Event object. Meer informatie daarover vind je op MDC :)

Javascript heeft geen ingebouwde functie die "addEvent" heet (wel addEventListener), dus ik ga ervanuit dat je een library gebruikt. Welke library is dit, Mootools?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Dit is MooTools ja, daarin kun je heel envoudig e.stop(); gebruiken om het event te cancellen.

Acties:
  • 0 Henk 'm!

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
jvsjmedia.nl schreef op vrijdag 26 maart 2010 @ 19:58:

En dan nog een vraagje...
De code werkt niet in IE, gaat fout op:

menuItem.addEvent( 'mouseup' , function( e ){

Alleen debuggen via IE is zo heerlijk lastig...

Bedankt!
Niet zoveel moeite mee als je er een debugger aan hangt. Zie onder andere hier. Het kost misschien iets meer tijd om het in te regelen maar dan werkt het net zo goed als in andere browsers.

Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Alleen debuggen via IE is zo heerlijk lastig...
IE8 heeft gewoon een ingebouwde javascript-debugger. Werkt net zo goed als Firebug hoor :?

/edit typo fixed :)

[ Voor 7% gewijzigd door _Thanatos_ op 30-03-2010 09:33 ]

日本!🎌


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Werkt niet zo goed of werkt nét zo goed? Maar idd, gewoon visual studio attachen aan je IE (en debugging mode op script zetten), werkt ook pre 8.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1