Je me souviens que lorsque je suis entré en contact pour la première fois avec le HTML et le JavaScript dynamiques, je suis tombé sur des codes de script concernant le blocage du clic droit de la souris. À cette époque, beaucoup de ces codes étaient utilisés pour empêcher les spectateurs de copier du texte ou autre. contenu sur la page Web sans autorisation. Plus tard, des applications pratiques ont prouvé que cette approche n'est pas conforme à l'expérience utilisateur, et il existe de nombreuses façons de la déchiffrer. Par exemple, j'ai écrit un jour un article expliquant comment supprimer l'interdiction de. copier sur une page Web.
On peut voir qu'il n'est pas judicieux de restreindre le clic droit et la copie, mais aujourd'hui, je veux toujours parler de l'interdiction de la copie de pages Web et des menus contextuels, car avec le développement de la technologie APP de page Web, la différence entre les applications de page Web et applications de bureau Les frontières entre eux sont de plus en plus floues. Certains programmes de bureau sont en fait implémentés par des pages Web et JavaScript, et certaines applications mobiles peuvent également être implémentées par JavaScript HTML5. Dans ce cas, il est nécessaire de restreindre le clic droit, car. En tant qu'application, la sélection de texte par clic droit et le menu contextuel sur la page Web sont inutiles dans la plupart des cas.
L'introduction suivante ne contient peut-être qu'un certain aspect du code, mais je pense que tout le monde pourra en tirer des conclusions :-)
1. La version brute restreint la sélection de copie ou interdit le bouton droit de la souris
Parlons d'abord de la façon de restreindre ou d'interdire grossièrement aux téléspectateurs de copier du texte sur une page Web. Pour empêcher les téléspectateurs de copier du texte normalement, nous devons penser à désactiver certaines opérations spécifiques des utilisateurs, comme le clic droit de la souris, la sélection. , copie, etc., etc., et ces opérations correspondent aux événements de script correspondants. Tant que vous ajoutez une méthode à ces événements et que vous la laissez renvoyer false, vous pouvez "manger" l'opération. Généralement, le code de script qui interdit la copie est. comme suit :
2. Déterminez raisonnablement les éléments de balise HTML à restreindre
Comment déterminer la balise d'élément du calque en cours de traitement, c'est-à-dire obtenir la balise HTML où se trouve actuellement la souris. Ici, nous prenons comme exemple le menu contextuel. En fait, la fonction passée dans document.body. oncontextmenu a un paramètre que nous omettrons. Oui, la méthode d'écriture complète devrait être document.body.oncontextmenu=function(e){} où e est l'objet Event en JavaScript, qui peut être obtenu via window.event dans IE. Grâce à cet objet événement, nous pouvons obtenir la balise HTML là où se trouve la souris lorsque l'événement est déclenché. Nous pouvons juger si nous voulons ignorer les balises des éléments de traitement. Ici, je propose une fonction comme suit :
.
Le e ici est l'événement de l'objet événement, et la cible est l'objet élément référencé par l'objet événement. Bien sûr, les deux variables ici sont écrites d'une manière compatible avec IE. Pour plus de détails, veuillez vous référer. à "Comment puis-je faire fonctionner event.srcElement dans" Firefox et qu'est-ce que cela signifie ?》; Les listes blanches ici sont des noms de balises d'éléments HTML de liste blanche, tels que ['INPUT', 'TEXTAREA'], ce qui signifie que le texte saisi box input et textarea seront ajoutés au jugement Si l'élément d'événement actuel est Return true, afin que nous puissions bloquer sélectivement le bouton droit de la souris via le code suivant :
3. Le blocage sélectif de la version JQuery interdit la sélection de texte
De même, d'autres opérations peuvent également être bloquées de manière sélective. Dans un environnement pris en charge par JQuery, j'ai trouvé un tel article sur StackOverflow "Comment désactiver la sélection de texte à l'aide de jQuery ?", bien qu'il explique que la sélection est interdite. Mais vous pouvez apprendre. à partir de celui-ci. Le code spécifique est le suivant :
4. Amélioration supplémentaire : protection des opérations de clic de souris
Un problème que j'ai rencontré lors du test de ce code est que lorsque vous cliquez sur des éléments autres que input, select et textarea, toutes les pages seront sélectionnées. L'auteur original a donné une méthode simple en ajoutant .on('mousedown au code d'utilisation. ', faux), bloquant ainsi le clic de souris. Le code d'utilisation devient le suivant :
Copiez le code
Le code est le suivant :