Rechte Maustaste Menü
hawkmaster
- javascript
0 hawkmaster1 ChrisB
0 hawkmaster0 ChrisB
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
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
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
Hallo Chris,
sorry, ja klar.
Weiss nicht warum das abgeschnitten wurde.
Hier der Ori Link.
viele Grüße
hawk
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
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