Heim > Artikel > Web-Frontend > Ausführliche Diskussion darüber, wie JavaScript und JQuery das Rechtsklick-Menü von Webseiten blockieren und Auswahl- und Kopierfähigkeiten verbieten
Ich erinnere mich, dass ich, als ich zum ersten Mal mit dynamischem HTML und JavaScript in Kontakt kam, auf Skriptcodes zum Blockieren der Maus mit der rechten Maustaste stieß. Damals wurden viele dieser Codes verwendet, um zu verhindern, dass Betrachter Text oder anderes kopieren Inhalte auf der Webseite ohne Erlaubnis. Praktische Anwendungen haben gezeigt, dass dieser Ansatz nicht mit der Benutzererfahrung übereinstimmt, und es gibt viele Möglichkeiten, ihn zu knacken. Ich habe beispielsweise einmal einen Artikel geschrieben, in dem erklärt wird, wie man das Verbot aufhebt Kopieren auf einer Webseite.
Es ist offensichtlich, dass es unklug ist, das Klicken und Kopieren mit der rechten Maustaste einzuschränken, aber heute möchte ich immer noch über das Verbot des Kopierens von Webseiten und des Rechtsklick-Menüs sprechen, da mit der Entwicklung der Webseiten-APP-Technologie der Unterschied zwischen Webseitenanwendungen gestiegen ist und Desktop-Anwendungen Die Grenzen zwischen ihnen verschwimmen zunehmend. Einige Desktop-Programme werden tatsächlich durch Webseiten und JavaScript implementiert, und einige mobile Anwendungen können auch durch HTML5-JavaScript implementiert werden. In diesem Fall ist es notwendig, den Rechtsklick einzuschränken Da es sich um eine APP handelt, sind die Textauswahl per Rechtsklick und das Popup-Menü auf der Webseite in den meisten Fällen unnötig.
Die folgende Einführung enthält möglicherweise nur einen bestimmten Aspekt des Codes, aber ich glaube, dass jeder in der Lage sein wird, Schlussfolgerungen zu ziehen :-)
1. Die Rohversion schränkt die Auswahl beim Kopieren ein oder verbietet die rechte Maustaste
Lassen Sie uns zunächst darüber sprechen, wie Sie das Kopieren von Text auf einer Webseite durch Betrachter grob einschränken oder verbieten können. Um zu verhindern, dass Betrachter Text auf normale Weise kopieren, müssen wir darüber nachdenken, bestimmte spezifische Vorgänge von Benutzern zu deaktivieren, z. B. das Klicken mit der rechten Maustaste und das Auswählen , Kopieren usw. usw., und diese Vorgänge entsprechen den entsprechenden Skriptereignissen. Solange Sie diesen Ereignissen eine Methode hinzufügen und sie „false“ zurückgeben, können Sie den Skriptcode, der das Kopieren verhindert, „fressen“. wie folgt:
So ermitteln Sie das Element-Tag der aktuell verarbeiteten Ebene, dh das HTML-Tag, an dem sich die Maus gerade befindet. Hier nehmen wir tatsächlich die in document.body übergebene Funktion. oncontextmenu hat einen Parameter, den wir weglassen werden. Ja, die vollständige Schreibmethode sollte document.body.oncontextmenu=function(e){} sein, wobei e das Event-Objekt in JavaScript ist, das über window.event im IE abgerufen werden kann. Über dieses Ereignisobjekt können wir das HTML-Tag abrufen, an dem sich die Maus befindet, wenn das Ereignis ausgelöst wird. Wir können beurteilen, ob wir Verarbeitungselement-Tags ignorieren möchten:
Das e hier ist das Ereignisobjekt, und das Ziel ist das Elementobjekt, auf das das Ereignisobjekt verweist. Natürlich sind beide Variablen hier so geschrieben, dass sie mit dem IE kompatibel sind zu „Wie kann ich event.srcElement in Firefox zum Laufen bringen und was bedeutet das?“ Die Whitelists hier sind Whitelist-HTML-Element-Tag-Tag-Namen, wie zum Beispiel ['INPUT', 'TEXTAREA'], was bedeutet, dass der Eingabetext Box-Eingabe und Textbereich werden zur Beurteilung hinzugefügt, wenn das aktuelle Ereigniselement Return true ist, sodass wir die rechte Maustaste über den folgenden Code selektiv blockieren können:
3. Die selektive Blockierung der JQuery-Version verhindert die Textauswahl
In ähnlicher Weise können auch andere Vorgänge selektiv blockiert werden. In einer von JQuery unterstützten Umgebung habe ich auf StackOverflow einen Artikel wie „Wie deaktiviere ich die Textauswahl mit jQuery?“ gefunden, in dem jedoch erklärt wird, dass die Auswahl verboten ist daraus. Der spezifische Code lautet wie folgt:
Weitere Verbesserung: Mausklickoperationen abschirmen
Ein Problem, auf das ich beim Testen dieses Codes gestoßen bin, besteht darin, dass beim Klicken auf andere Elemente als Eingabe, Auswahl und Textbereich alle Seiten ausgewählt werden. Der ursprüngliche Autor hat eine einfache Methode angegeben, indem er .on('mousedown an den Verwendungscode angehängt hat . ', false), wodurch der Mausklick blockiert wird:
Kopieren Sie den Code