.test1 {
user-select: none;
}
<body>
<p class="content">
<p class="test2">111</p>
<p class="test1">222</p>
<p class="test2">333</p>
<p class="test1">444</p>
<p class="test2">555</p>
</p>
</body>
J'ai fait l'option de désactiver cet article pour certains éléments. Lorsque je sélectionne un élément individuellement, je peux en effet désactiver la sélection, et le contenu ne peut pas être copié. Cependant, si j'utilise cmd + a
pour tout sélectionner, je verrai le désactivé. éléments dans La page montre qu'elle n'est pas sélectionnée, mais le contenu peut être copié à ce moment.
[].forEach.call(document.querySelectorAll('.test1'), (node) => {
node.addEventListener('copy', (e) => {
e.stopPropagation();
e.preventDefault();
console.log(1);
return false;
}, true);
node.addEventListener('selectstart', (e) => {
e.stopPropagation();
e.preventDefault();
console.log(2);
return false;
}, true);
});
J'ai trouvé que cela prend toujours effet lors de la sélection individuelle, mais échoue lors de la sélection de tous. Je voudrais donc demander s'il existe un moyen d'intercaler les nœuds non sélectionnables parmi les nœuds sélectionnables, et également de permettre de sélectionner uniquement les nœuds sélectionnables lorsque. copie du contenu.
Vous pouvez essayer une autre méthode, comme mettre le texte en CSS. Le texte en CSS ne peut pas du tout être sélectionné et copié. J'ai écrit un code de test avec désinvolture :
JsFiddle : https://jsfiddle.net/d95cugaL/
JsBin : http://jsbin.com/nowoxuceta/e...
Ou allez plus loin et mettez le texte directement sur l'image...
Voici une idée, c'est-à-dire que vous pouvez désactiver l'événement de souris ctrl+c.
//Désactiver la copie ctrl
S'il y a un problème avec la sélection de tout, vous pouvez également désactiver ctrl+A