415 Stimmen

Wie kann ich einer Webseite ein benutzerdefiniertes Rechtsklickmenü hinzufügen?

Ich möchte meiner Webanwendung ein benutzerdefiniertes Rechtsklickmenü hinzufügen. Ist dies möglich, ohne vorgefertigte Bibliotheken zu verwenden? Wenn ja, wie kann ich ein einfaches benutzerdefiniertes Rechtsklick-Menü anzeigen, das keine JavaScript-Bibliothek eines Drittanbieters verwendet?

Ich strebe etwas an, das dem entspricht, was Google Docs macht. Dort können Benutzer mit der rechten Maustaste klicken und ihr eigenes Menü anzeigen.

HINWEIS: Ich möchte lernen, wie ich mein eigenes Programm erstellen kann, anstatt etwas zu verwenden, das bereits von jemandem erstellt wurde, da diese Bibliotheken von Drittanbietern meistens mit Funktionen überladen sind, während ich nur die Funktionen haben möchte, die ich benötige, also möchte ich, dass es komplett von mir selbst erstellt wird.

1voto

EpicNinjaCheese Punkte 41

Eine einfache Möglichkeit ist die Verwendung von onContextMenu zur Rückgabe einer JavaScript-Funktion:

<input type="button" value="Example" onContextMenu="return RightClickFunction();">

<script>
 function RightClickFunction() {
  // Enter your code here;
  return false;
 }
</script>

Und durch die Eingabe von return false; können Sie das Kontextmenü ausblenden.

Wenn Sie das Kontextmenü trotzdem anzeigen möchten, können Sie einfach die Option return false; Linie.

1voto

Graham Allen Punkte 27
<script language="javascript" type="text/javascript">
  document.oncontextmenu = RightMouseDown; 
  document.onmousedown = mouseDown; 

  function mouseDown(e) {
    if (e.which==3) {//righClick
      alert("Right-click menu goes here");
    } 
  }

  function RightMouseDown() { 
    return false; 
  }
</script>
</body> 
</html>

0voto

WowOWwoW Punkte 1

Sie sollten daran denken, wenn Sie die Lösung nur für Firefox verwenden wollen, wenn Sie sie zum gesamten Dokument hinzufügen wollen, sollten Sie hinzufügen contextmenu="mymenu" zum <html> Tag nicht auf den body Tag.
Das sollten Sie beachten.

0voto

Cannicide Punkte 3769
<html>
<head>
<style>
.rightclick {
    /* YOUR CONTEXTMENU'S CSS */
    visibility: hidden;
    background-color: white;
    border: 1px solid grey;
    width: 200px;
    height: 300px;
}
</style>
</head>
<body>
  <div class="rightclick" id="ya">
    <p onclick="alert('choc-a-late')">I like chocolate</p><br><p onclick="awe-so-me">I AM AWESOME</p>
  </div>
  <p>Right click to get sweet results!</p>
</body>
<script>
    document.onclick = noClick;
    document.oncontextmenu = rightClick;
    function rightClick(e) {
        e = e || window.event;
        e.preventDefault();
        document.getElementById("ya").style.visibility = "visible";
        console.log("Context Menu v1.3.0 by IamGuest opened.");
   }
function noClick() {
    document.getElementById("ya").style.visibility = "hidden";
    console.log("Context Menu v1.3.0 by IamGuest closed.");
}
</script>
<!-- Coded by IamGuest. Thank you for using this code! -->
</html>

Sie können diesen Code optimieren und ändern, um ein besser aussehendes, effizienteres Kontextmenü zu erstellen. Was das Ändern eines bestehenden Kontextmenüs angeht, bin ich mir nicht sicher, wie man das macht... Schauen Sie sich dies an fiddle für eine organisierte Sichtweise. Versuchen Sie auch, die Elemente in meinem Kontextmenü anzuklicken. Sie sollten Ihnen ein paar tolle Nachrichten anzeigen. Wenn sie nicht funktionieren, versuchen Sie etwas... Komplexeres.

0voto

fedeghe Punkte 1157

Ich verwende etwas Ähnliches wie das Folgende jsfiddle

function onright(el, cb) {
    //disable right click
    document.body.oncontextmenu = 'return false';
    el.addEventListener('contextmenu', function (e) { e.preventDefault(); return false });
    el.addEventListener('mousedown', function (e) {
        e = e || window.event;
        if (~~(e.button) === 2) {
            if (e.preventDefault) {
                e.preventDefault();
            } else {
                e.returnValue = false;
            }
            return false;
        }
    });

    // then bind Your cb
    el.addEventListener('mousedown', function (e) {
        e = e || window.event;
        ~~(e.button) === 2 && cb.call(el, e);
    });
}

wenn Sie auf ältere IE-Browser abzielen, sollten Sie es auf jeden Fall mit dem ' attachEvent; Fall ergänzen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X