Dritte Maus-Taste für jdMenu

 

Das Plugin „jdMenu“ ist für jQuery gedacht und kann schnell verschachtelte Menü-Strukturen realisieren. Es wird unter http://jdsharp.us/jQuery/plugins/jdMenu/ zum Download angeboten. Als versierter Surfer mit mordernen Browsern hat man sich angewöhnt, Links per dritter Maustaste (bzw. „Mausrad-Klick“) in einem neuen Tab (bzw. Fenster) zu öffnen. Das ist etwas, was das jdMenu in der Version 1.4.1 noch nicht kann. Hier eine kleine Anleitung, wie man diesen Mangel beheben kann:

Datei: jquery.jdMenu.js

Alter Code (Zeile 35 – 60):

.bind('click.jdmenu', function(evt) {
  var ul = $('> ul', this);
  if ( ul.length == 1 && 
    ( settings.disableLinks == true || $(this).hasClass('accessible') ) ) {
    showMenu( ul, settings.onAnimate, settings.isVertical );
    return false;
  }
  
  // The user clicked the li and we need to trigger a click for the a
  if ( evt.target == this ) {
    var link = $('> a', evt.target).not('.accessible');
    if ( link.length > 0 ) {
      var a = link[0];
      if ( !a.onclick ) {
        window.open( a.href, a.target || '_self' );
      } else {
        $(a).trigger('click');
      }
    }
  }
  if ( settings.disableLinks || 
    ( !settings.disableLinks && !$(this).parent().hasClass('jd_menu') ) ) {
    $(this).parent().jdMenuHide();
    evt.stopPropagation();
  }
})

Neuer Code:

.bind('click.jdmenu, mousedown.jdmenu', function(evt) {
  var isThirdMB = evt.type == 'mousedown' && evt.which == 2;
  if ( evt.type == 'mousedown' && !isThirdMB ) {
    return true;
  }
  else {
    if ( isThirdMB ) {
      $('> ul', this).trigger('click');
      return false;
    }
  }
  
  var ul = $('> ul', this);
  if ( ul.length == 1 && 
    ( settings.disableLinks == true || $(this).hasClass('accessible') ) ) {
    showMenu( ul, settings.onAnimate, settings.isVertical );
    return false;
  }
  
  // The user clicked the li and we need to trigger a click for the a
  if ( evt.target == this ) {
    var link = $('> a', evt.target).not('.accessible');
    if ( link.length > 0 ) {
      var a = link[0];
      if ( !a.onclick ) {
        window.open( a.href, a.target || '_self' );
      } else {
        $(a).trigger('click');
      }
    }
  }
  if ( settings.disableLinks || 
    ( !settings.disableLinks && !$(this).parent().hasClass('jd_menu') ) ) {
    $(this).parent().jdMenuHide();
    if ( !isThirdMB )
      evt.stopPropagation();
  }
})

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Wir benutzen Cookies, um die Nutzerfreundlichkeit der Webseite zu verbessen. Durch Ihren Besuch stimmen Sie dem zu.