recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Problèmes liés à la désactivation de la sélection et de la copie de texte

Le style est le suivant
.test1 {
  user-select: none;
}
La structure du HTML est la suivante
<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.

Ensuite, utilisez js pour contrôler :
[].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.

为情所困为情所困2706 Il y a quelques jours776

répondre à tous(2)je répondrai

  • 为情所困

    为情所困2017-06-26 11:00:49

    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...

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-26 11:00:49

    Voici une idée, c'est-à-dire que vous pouvez désactiver l'événement de souris ctrl+c.
    //Désactiver la copie ctrl

    document.onkeydown=function(){
        if((event.ctrlKey) && (window.event.keycode==67)){
              event.returnValue=false;
              alert("Ctrl+C被禁止啦!");
        }
    }
    

    S'il y a un problème avec la sélection de tout, vous pouvez également désactiver ctrl+A

    répondre
    0
  • Annulerrépondre