hawkmaster: Rechte Maustaste Menü

Hallo zusammen,
für eine kleine Intranet Lösung überlege ich gerade, ob man ein Menü einblenden kann, wenn der Anwender die recht Maustaste auf einen Eintrag einer Liste klickt.
Zum ausprobieren habe ich mal ein Self Beispiel versucht.
Rechte Maustaste sperren:

http://de.selfhtml.org/navigation/anzeige/rechte_maustaste.htm

  
<script type="text/javascript">  
function click (e) {  
  if (!e)  
    e = window.event;  
  if ((e.type && e.type == "contextmenu") || (e.button && e.button == 2) || (e.which && e.which == 3)) {  
    if (window.opera)  
      window.alert("Sorry: Diese Funktion ist deaktiviert.");  
    return false;  
  }  
}  
if (document.layers)  
  document.captureEvents(Event.MOUSEDOWN);  
document.onmousedown = click;  
document.oncontextmenu = click;  
</script>  
  

Dann habe ich mal noch ein anderes gefunden:

  
<html>  
<head>  
<title>Eigenes Kontextmenue</title>  
<script language="JavaScript" type="text/javascript">  
  
ie = (document.getElementById && document.all && document.styleSheets) ? 1:0;  
nn = (document.getElementById && !document.all) ? 1:0;  
  
  
if(ie || nn) {  
    width = 60, height = 100, status = 0;  
    spacer = "&nbsp;&nbsp;";  
    onfocus = "onfocus='if(this.blur)this.blur()'";  
  
	document.write("<style type='text/css'>" +  
	               "a.menu {text-decoration:none;font: 12px Verdana;}" +  
				   "a.menu:link,a.menu:visited {text-decoration:none;color:#000000}" +  
				   "a.menu:hover,a.menu:active {text-decoration:none;color:#000000}" +  
				   "hr.menu {border:1px;height:1px;background-color:black;color:black}</style>" +  
				   "<div id='menu' style='position:absolute;top:-250;left:0;z-index:100'>" +  
				   "<table cellpadding='5' cellspacing='0' width='" + width + "' height='" + height + "' style='border-style:outset;border-width:1;border-color:black;background-color:lightblue'>" +  
				   "<tr><td><a class='menu' href='javascript:history.back()'" + onfocus + ">&nbsp;Zur&uuml;ck</a></td></tr>" +  
				   "<tr><td><a class='menu' href='javascript:history.forward()'" + onfocus + ">&nbsp;Vorw&auml;rts</a></td></tr>" +  
				   "<tr><td><hr class='menu'><a class='menu' href='javascript:location.reload()'" + onfocus + ">&nbsp;Aktualisieren</a></td></tr>" +  
				   "<tr><td><a class='menu' href='javascript:viewSource()'" + onfocus + ">&nbsp;Quelltext</a></td></tr>" +  
				   "<tr><td><a class='menu' href='javascript:print()'" + onfocus + ">&nbsp;Drucken</a></td></tr>" +  
				   "</table></div>");  
				  
  
    document.oncontextmenu = showMenu;  
    document.onmouseup = hideMenu;  
}  
  
  
function showMenu(e) {  
    if(ie) {  
        if(event.clientX > width)  
		    xPos = event.clientX - width + document.body.scrollLeft;  
        else  
		    xPos = event.clientX + document.body.scrollLeft;  
  
		if(event.clientY > height)  
		    yPos = event.clientY - height + document.body.scrollTop;  
        else  
	        yPos = event.clientY + document.body.scrollTop;  
    } else {  
        if(e.pageX > width + window.pageXOffset)  
		    xPos = e.pageX - width;  
        else  
		    xPos = e.pageX;  
  
		if(e.pageY > height + window.pageYOffset)  
		    yPos = e.pageY - height;  
        else  
		    yPos = e.pageY;  
    }  
    document.getElementById("menu").style.left = xPos;  
    document.getElementById("menu").style.top = yPos;  
    status = 1;  
    return false;  
}  
  
  
function hideMenu(e) {  
    if(status == 1 && ((ie && event.button == 1) || (nn && e.which == 1))) {  
        setTimeout("document.getElementById('menu').style.top=-250", 250);  
        status = 0;  
   }  
}  
  
  
function viewSource() {  
    var w = window.open("view-source:" + window.location,'','resizable=1,scrollbars=1');  
}  
</script>  
</head>  
<body>  
Bet&auml;tigen Sie die rechte Maustatse zum Testen!  
</body>  
</html>  

Beides funktioniert bei mir zwar im FF nicht jedoch im IE8.
Mache ich was falsch oder hat der IE8 irgend welche besondern Einstellungen.
Ich habe die Sicherheitsstufe schon niedrig gestellt.

vielen Dank und viele Grüße
hawk

  1. Ich glaube es hat sich erledigt.
    Nachdem ich einen Hinweis in einem Blog auf
    http://social.answers.microsoft.com/ gefunden habe, klappt es nun.

    ich musste den IE resetten, jetzt gehen alle Scripte :-)

    vielen Dank und viele Grüße
    hawk

    1. Hi,

      Nachdem ich einen Hinweis in einem Blog auf
      http://social.answers.microsoft.com/ gefunden habe, klappt es nun.

      Wärst du auch noch so nett, einen konkreten Link auf die besagte Information zu setzen, damit der Thread ggf. auch anderen weiterhelfen kann?

      MfG ChrisB

      --
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
      1. Hallo Chris,

        sorry, ja klar.
        Weiss nicht warum das abgeschnitten wurde.
        Hier der Ori Link.

        http://social.answers.microsoft.com/Forums/en-US/InternetExplorer/thread/0aba6b02-5783-49ca-a27b-6636e43ed1dc

        viele Grüße
        hawk

  2. Hallo,

    mittlerweile funktioniert mein "rechte Maustaste Menü". Aber leider nur im FF.

    Ich möchte den Event nur auslösen, wenn man auf einen Eintrag in einer List (<select>) klickt.

    <select name="sel_jobs" size="10" onmousedown="click(event);" >

    Der IE 8 reagiert darauf nicht.
    Wenn ich allerdings ein;

    document.onmousedown = click;

    einfüge, dann klappt es auch im IE. Allerding halt überall auf der Seite und nicht nur über dem <select>.

    Warum versteht der IE das "onmousedown" im <select> nicht?
    Bin für jeden Tipp dankbar.

    vielen Dank und viele Grüße
    hawk

    1. Hi,

      <select name="sel_jobs" size="10" onmousedown="click(event);" >

      Der IE 8 reagiert darauf nicht.
      Wenn ich allerdings ein;

      document.onmousedown = click;

      einfüge, dann klappt es auch im IE. Allerding halt überall auf der Seite und nicht nur über dem <select>.

      Dann frage an dieser Stelle das Ziel(element) des Klicks ab.

      Warum versteht der IE das "onmousedown" im <select> nicht?

      Weil er es nicht selber darstellt, sondern vom OS rendern lässt.

      Ein DIV oder SPAN um das SELECT-Element sollte sich aber eigentlich ebenso zum "Abfangen" des Klicks eignen, wie document - aber die Auswertung einfacher machen.

      MfG ChrisB

      --
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]