437 Stimmen

Wie kann ich den Rechtsklick auf meiner Webseite deaktivieren?

Kann ich den Rechtsklick auf meiner Webseite deaktivieren, ohne JavaScript zu verwenden? Ich frage das, weil die meisten Browser dem Benutzer erlauben, JavaScript zu deaktivieren.

Wenn nicht, wie kann ich JavaScript verwenden, um den Rechtsklick zu deaktivieren?

173 Stimmen

Die Deaktivierung des Rechtsklicks dient nicht der Sicherheit, sondern verärgert nur Ihre Benutzer. Jeder Browser, der dies nicht zulässt, ist wertlos, aber Websites, die dies von vornherein tun, sind schrecklich.

27 Stimmen

Wenn Sie nicht wollen, dass Ihre Inhalte gestohlen werden, sollten Sie sie nicht ins Netz stellen :) Moderne Browser können sogar die Fähigkeit von JavaScript, den Rechtsklick zu deaktivieren, außer Kraft setzen. Tools wie Firebug/ Web Dev Toolbar machen den Schutz nutzlos.

11 Stimmen

Hier ist ein kleines Chrome/Greesemonkey-Benutzerskript, um den Rechtsklick wieder zu aktivieren: dl.dropbox.com/u/464119/Programmierung/javascript/

737voto

cletus Punkte 596503

Sie können dies mit JavaScript tun, indem Sie einen Ereignis-Listener für das Ereignis "contextmenu" hinzufügen und die Funktion preventDefault() Methode:

document.addEventListener('contextmenu', event => event.preventDefault());

Dies vorausgeschickt: TUN SIE ES NICHT.

Warum? Weil es nichts anderes bewirkt, als die Benutzer zu verärgern. Außerdem verfügen viele Browser über eine Sicherheitsoption, mit der die Deaktivierung des Rechtsklick-(Kontext-)Menüs ohnehin nicht möglich ist.

Ich weiß nicht, warum Sie das wollen. Wenn Sie glauben, dass Sie Ihren Quellcode oder Ihre Bilder auf diese Weise schützen können, irren Sie sich: Das können Sie nicht.

3 Stimmen

Es ist nicht wirklich "javascript oder html", es ist nur wirklich "und", wie die "html nur" Weg erfordert Javascript, die, wenn nicht verfügbar/deaktiviert ist, wird nicht ausgeführt.

133 Stimmen

Verwendung von oncontextmenu="return false" auf etwas anderem als dem Körper kann sinnvoll sein, zum Beispiel auf einer Leinwand.

1 Stimmen

@cletus deaktivieren Rechtsklick ist irgendwo notwendig Nehmen wir an, Sie nehmen an einem Online-Quiz teil und wollen nicht, dass Ihre Fragen kopiert und bei Google gesucht werden können, also hängt es von den Bedingungen ab.

134voto

Wedge Punkte 19070

NICHT

Lassen Sie es einfach.

Egal, was Sie tun, Sie können nicht verhindern, dass die Nutzer vollen Zugriff auf alle Daten Ihrer Website haben. Jedes von Ihnen programmierte Javascript kann durch einfaches Deaktivieren von Javascript im Browser (oder durch Verwendung eines Plugins wie NoScript) unwirksam gemacht werden. Darüber hinaus gibt es keine Möglichkeit, die Fähigkeit eines Benutzers zu deaktivieren, einfach den "Quellcode" oder "Seiteninformationen" (oder wget) für Ihre Website anzuzeigen.

Das ist die Mühe nicht wert. Es wird nicht wirklich funktionieren. Es macht Ihre Website aktiv benutzerfeindlich. Sie werden dies bemerken und aufhören, sie zu besuchen. Das bringt keinen Nutzen, sondern nur verschwendete Mühe und verlorenen Verkehr.

Lassen Sie es.

Aktualisierung: Es scheint, dass dieses kleine Thema im Laufe der Zeit ziemlich kontrovers geworden ist. Dennoch bleibe ich bei meiner Antwort auf diese Frage. Manchmal ist die richtige Antwort ein Ratschlag und nicht eine wörtliche Antwort.

Menschen, die auf diese Frage stoßen, in der Hoffnung herauszufinden, wie man benutzerdefinierte Kontextmenüs sollten Sie anderswo suchen, z. B. bei diesen Fragen:

23 Stimmen

@GAgnew: Es gibt gute Gründe, das Kontextmenü zu ersetzen. Es gibt keine sinnvollen Anwendungen, um Rechtsklicks bedingungslos zu deaktivieren, ohne sie auf sinnvolle Weise zu behandeln.

11 Stimmen

Ich musste aus demselben Grund wie @GAgnew auf -1 gehen, aber mir ist klar, dass der "Schutz" von Inhalten eine wahrscheinlich was der Benutzer gesucht hat. Ein weiterer Grund no a ausflippen über die Deaktivierung des Rechtsklicks ist, dass das Geschäftsziel darin bestehen kann, es zu härter zum Kopieren von Inhalten für Die meisten Menschen. Geeks != die meisten Benutzer.

113 Stimmen

Wenn der Benutzer ein HTML5-Videospiel erstellen möchte, könnte die Deaktivierung des Rechtsklicks sehr nützlich sein. Normalerweise ist dies nicht wünschenswert, aber einfach nur "NICHT" zu sagen, ohne den richtigen Kontext, ist nicht sehr hilfreich.

87voto

Mr Speaker Punkte 2931

Die ursprüngliche Frage bezog sich darauf, wie man den Rechtsklick vorausgesetzt, der Benutzer kann JavaScript deaktivieren Das klingt ruchlos und böse (daher die negativen Antworten) - aber alle Duplikate leiten hierher um, auch wenn viele der Duplikate weniger böse Absichten verfolgen.

Wie z. B. die Verwendung der Rechtsklick-Schaltfläche in HTML5-Spielen. Dies kann mit dem Inline-Code oben getan werden, oder ein bisschen netter ist etwas wie dieses:

document.addEventListener("contextmenu", function (e){
    e.preventDefault();
}, false);

Wenn Sie jedoch ein Spiel entwickeln, dann denken Sie daran, dass die Rechtsklick-Taste die contextmenu Ereignis - aber es löst auch das reguläre mousedown y mouseup Veranstaltungen zu. Sie müssen also die Ereignisdaten die Eigenschaft, um festzustellen, ob es sich um die linke ( which === 1 ), Mitte ( which === 2 ), oder rechts ( which === 3 ) Maustaste, die das Ereignis auslöst.

Hier ist ein Beispiel in jQuery - beachten Sie, dass das Drücken der rechten Maustaste drei Ereignisse auslöst: das mousedown Ereignis, das contextmenu Ereignis, und die mouseup Veranstaltung.

// With jQuery
$(document).on({
    "contextmenu": function (e) {
        console.log("ctx menu button:", e.which); 

        // Stop the context menu
        e.preventDefault();
    },
    "mousedown": function(e) { 
        console.log("normal mouse down:", e.which); 
    },
    "mouseup": function(e) { 
        console.log("normal mouse up:", e.which); 
    }
});

Wenn Sie also die linke und die rechte Maustaste in einem Spiel verwenden, müssen Sie einige bedingte Logik in den Maus-Handlern ausführen.

0 Stimmen

Wenn ich aktiviert habe dom.event.contextmenu.enabled in Firefox, wird die mousedown y mouseup Ereignisse werden auch dann ausgelöst, wenn contextmenu nicht?

75voto

Omar Wagih Punkte 8082

Wenn es Ihnen egal ist, dass der Benutzer jedes Mal, wenn er versucht, mit der rechten Maustaste zu klicken, eine Meldung erhält, fügen Sie Folgendes zu Ihrem Body-Tag hinzu

<body oncontextmenu="return false;">

Dadurch wird jeglicher Zugriff auf das Kontextmenü (nicht nur über die rechte Maustaste, sondern auch über die Tastatur) blockiert.

Wie bereits in den anderen Antworten erwähnt, ist es jedoch wirklich sinnlos, eine Rechtsklickunterdrückung hinzuzufügen. Jeder, der über grundlegende Browser-Kenntnisse verfügt, kann die Quelle einsehen und die benötigten Informationen extrahieren.

2 Stimmen

Ja, aber es kommt vor, dass ich ein Bild kurz mit jemandem teilen möchte, von dem ich weiß, dass es ihm an grundlegenden Browserkenntnissen mangelt. Die Deaktivierung des Rechtsklicks ist nicht 100%ig sicher, aber wenn ich das Bild nur für ein paar Minuten poste, damit die Person es sich ansehen kann, ist es ziemlich sicher.

2 Stimmen

Berührungsempfindliche Systeme ordnen bestimmte Berührungsereignisse, wie z. B. ein langes Antippen, manchmal einem Rechtsklick zu (und öffnen damit das Kontextmenü). Dieses Verhalten kann jedoch unerwünscht sein, und die einzige sinnvolle Möglichkeit, es zu verhindern, scheint darin zu bestehen, das Kontextmenü ganz zu deaktivieren.

1 Stimmen

@WillO: Ich habe einen ähnlichen Anwendungsfall, dem ich gerecht werden muss, aber zu Ihrer Information: Die Benutzer werden immer auf screenshots .

28voto

Wenn Sie ein Jquery-Fan sind, verwenden Sie diese

    $(function() {
        $(this).bind("contextmenu", function(e) {
            e.preventDefault();
        });
    });

11 Stimmen

Dies ist die Verwendung von jQuery für keinen Grund. Dies tut genau das Gleiche wie die einzelne JavaScript-Anweisung in der Antwort von Mr. Speaker, die 1½ Jahre vor dieser gepostet wurde. Übrigens enthält diese Antwort auch eine jQuery-Lösung, die Sie wiederum nicht brauchen. Weiß irgendjemand, der diese Antwort hochgestuft hat, überhaupt, was diese Lösung bewirkt? Warum wird auf das Ereignis "Dokument bereit" gewartet, um zu verhindern, dass das Kontextmenü angezeigt wird? Warum verwendet diese Lösung this innerhalb des Ready-Ereignisses? Warum verwenden Sie bind 代わりに on ?

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