Débloquer le copier, la sélection et le clic droit sur n'importe quelle page
Vous tombez sur un article, vous voulez copier un paragraphe dans vos notes — et la page ne vous laisse pas sélectionner de texte. Le clic droit ne fait rien. Ce n'est pas un bug du navigateur, c'est un blocage délibéré dans le JavaScript de la page. Cet article montre comment le lever avec une seule règle JustZix.
Comment les pages bloquent la copie
Il n'y a pas de « mode lecture seule » en HTML. Une page qui bloque la sélection le fait de deux façons :
- CSS —
user-select: nonesur les éléments de texte. - JavaScript — des handlers pour les événements
copy,selectstart,contextmenuqui appellentpreventDefault().
Les deux peuvent être annulés, car les deux s'exécutent dans le navigateur — et vous avez le contrôle total de votre propre navigateur.
Est-ce légal ?
Oui. Le texte est déjà sur votre écran — la page vous l'a envoyé. Lever le blocage de copie ne contourne aucune protection de contenu, car il n'y en a aucune ; ce n'est qu'une gêne UX. Le droit d'auteur sur le texte lui-même est une autre affaire — ce que vous faites du fragment copié vous regarde.
La règle — CSS plus JS
Réglez le motif d'URL sur la page qui vous agace (ou * globalement). Dans l'onglet JavaScript de la règle, collez :
['copy', 'cut', 'contextmenu', 'selectstart', 'dragstart']
.forEach(evt =>
document.addEventListener(evt, e => e.stopPropagation(), true)
);
const s = document.createElement('style');
s.textContent =
'*{user-select:text!important;-webkit-user-select:text!important}';
document.documentElement.appendChild(s);
Comment ça marche
stopPropagation en phase de capture
Le troisième argument de addEventListener mis à true signifie la phase de capture. Notre listener attrape l'événement avant qu'il n'atteigne le handler de la page et appelle stopPropagation() — la propagation s'arrête, et le handler de la page (celui avec preventDefault()) ne reçoit jamais l'événement.
Le style injecté
Le second bloc ajoute une règle CSS avec user-select: text !important. Le !important bat tout user-select: none de la page. Nous l'injectons depuis le JS (plutôt que comme le CSS de la règle) pour qu'il atterrisse tout à la fin de la cascade et soit sûr de gagner.
La variante CSS seule
Si le blocage est purement CSS, le JS est inutile — l'onglet CSS de la règle suffit :
* { user-select: text !important; -webkit-user-select: text !important; }
Essayez ça d'abord. Si la sélection ne fonctionne toujours pas, la page bloque aussi en JS et vous avez besoin de la version complète.
Pièges
- Les champs de mot de passe. Certaines pages bloquent la copie des champs
passwordà dessein — ce blocage peut être sensé, laissez-le. - Le contenu chargé plus tard. Le
<style>injecté couvre aussi les éléments ajoutés au DOM après le démarrage — il fonctionne sur les SPA. - Cela ne contourne pas un paywall. Débloquer la sélection révèle du texte que vous avez déjà. Cela ne dévoilera pas du contenu caché derrière une connexion.
À voir aussi
- Exemples — celui-ci et d'autres snippets prêts à l'emploi
- Raccourcis clavier personnalisés — un autre pattern d'event listeners
- Masquer les bannières cookies — du CSS pour les éléments intrusifs
Installez JustZix — et copiez depuis chaque page qui tente de vous en empêcher.
Notez cet article
Aucune note — soyez le premier.