Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Probleme beim Deaktivieren der Textauswahl und des Kopierens

Der Stil ist wie folgt
.test1 {
  user-select: none;
}
Die Struktur von HTML ist wie folgt
<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>

Ich habe die Option eingerichtet, diesen Artikel für einige Elemente zu deaktivieren. Wenn ich ein Element einzeln auswähle, kann ich die Auswahl tatsächlich deaktivieren, und der Inhalt kann nicht kopiert werden. Wenn ich jedoch cmd + a verwende, um alle auszuwählen, wird mir die Option „Deaktiviert“ angezeigt Elemente in Die Seite zeigt an, dass sie nicht ausgewählt ist, aber der Inhalt kann zu diesem Zeitpunkt kopiert werden.

Als nächstes verwenden Sie js zur Steuerung:
[].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);
});

Ich habe festgestellt, dass es bei der Auswahl einzelner Knoten immer noch wirksam wird, bei der Auswahl aller jedoch fehlschlägt. Daher möchte ich fragen, ob es eine Möglichkeit gibt, nicht auswählbare Knoten unter den auswählbaren Knoten zu verteilen und es auch zu ermöglichen, nur die auswählbaren Knoten auszuwählen Kopieren.

为情所困为情所困2689 Tage vor761

Antworte allen(2)Ich werde antworten

  • 为情所困

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

    可以换种思路,比如把文本放到css中。css中的文本就完全无法选中和复制了。随手写了个测试代码:

    JsFiddle: https://jsfiddle.net/d95cugaL/

    JsBin: http://jsbin.com/nowoxuceta/e...

    或者再进一步,直接把文本放在图片上...

    Antwort
    0
  • 我想大声告诉你

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

    这儿有个思路,就是你可以禁止ctrl+c的鼠标事件。
    //禁止ctrl复制

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

    如果全选有问题,也可以禁止ctrl+A

    Antwort
    0
  • StornierenAntwort