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 = " ";
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 + "> Zurück</a></td></tr>" +
"<tr><td><a class='menu' href='javascript:history.forward()'" + onfocus + "> Vorwärts</a></td></tr>" +
"<tr><td><hr class='menu'><a class='menu' href='javascript:location.reload()'" + onfocus + "> Aktualisieren</a></td></tr>" +
"<tr><td><a class='menu' href='javascript:viewSource()'" + onfocus + "> Quelltext</a></td></tr>" +
"<tr><td><a class='menu' href='javascript:print()'" + onfocus + "> 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ä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