dutsh_shulz: crossbrowser contextmenu

Beitrag lesen

hallo

kennt jemand von euch ein einfaches context menu script, das durch den befehl oncontextmenu im a-tag aufgerufen wird und möglichst leicht zu modifizieren ist (zusätzliche parameter übergeben).

was auch noch wichtig ist, dass es sowohl im ie wie auch im firefox(mozilla) läuft.

danke im voraus

greeeez sam

hoff, dass hilft dir weiter ;-)

// Nur für IE 5+ und NN 6+
ie5=(document.getElementById && document.all && document.styleSheets)?1:0;
nn6=(document.getElementById && !document.all)?1:0;

// Kontextmenü initialisieren
if (ie5 || nn6) {
  menuWidth=122, menuHeight=183;
  menuStatus=0;

document.write(
     "<div id='menu' style='position:absolute;top:-250;left:0;z-index:100'>"
    +"<table width='"+menuWidth+"' height='"+menuHeight+"'>"
    +"<tr><td><a href='javascript:history.back()'>Zurück</a></td></tr>"
    +"<tr><td><a href='javascript:history.forward()'>Vorwärts</a></td></tr>"
    +"<tr><td><a href='javascript:location.reload()'>Aktualisieren</a></td></tr>"
    +"<tr><td><a href='javascript:viewSource()'>Quelltext</a></td></tr>"
    +"<tr><td><a href='javascript:print()'>Drucken</a></td></tr>"
    +"<tr><td><a href='javascript:openFrameInNewWindow()'>Neues Fenster</a></td></tr>"
    +"</table></div>");

// Rechter Mausklick: Menü anzeigen, linker Mausklick: Menü verstecken
  document.oncontextmenu=showMenu; //oncontextmenu geht nicht bei NN 6.01
  document.onmouseup=hideMenu;
}

// Kontextmenü anzeigen
function showMenu(e) {
  if(ie5) {
    if(event.clientX>menuWidth) xPos=event.clientX-menuWidth+document.body.scrollLeft;
    else xPos=event.clientX+document.body.scrollLeft;
    if (event.clientY>menuHeight) yPos=event.clientY-menuHeight+document.body.scrollTop;
    else yPos=event.clientY+document.body.scrollTop;
  }
  else {
    if(e.pageX>menuWidth+window.pageXOffset) xPos=e.pageX-menuWidth;
    else xPos=e.pageX;
    if(e.pageY>menuHeight+window.pageYOffset) yPos=e.pageY-menuHeight;
    else yPos=e.pageY;
  }
  document.getElementById("menu").style.left=xPos;
  document.getElementById("menu").style.top=yPos;
  menuStatus=1;
  return false;
}

// Kontextmenü verstecken
function hideMenu(e) {
  if (menuStatus==1 && ((ie5 && event.button==1) || (nn6 && e.which==1))) {
    setTimeout("document.getElementById('menu').style.top=-250",250);
    menuStatus=0;
  }
}

// Quelltext anzeigen
function viewSource() {
  var w=window.open("view-source:"+window.location,'','resizable=1,scrollbars=1');
}

// Seite in neuem Fenster öffnen
function openFrameInNewWindow() {
  var w=window.open(window.location,'','resizable=1,scrollbars=1,status=1');