2010-03-08 11 views
17

Ich versuche zu verhindern, dass Informationen von einer Seite kopiert werden (für nicht-technische Benutzer natürlich). Ich weiß, wie man mit der Maus disable selecting text. Der folgende jquery-Code funktioniert:Wie kann ich Strg + A (alle auswählen) mit jquery in einem Browser deaktivieren?

Aber Benutzer können weiterhin Strg + A verwenden, um die gesamte Seite auszuwählen. Irgendwelche Problemumgehungen dafür?

+13

Bitte, tun Sie das nicht: es wird immer einen Weg, um Ihre Inhalte zu kopieren * (wie Sie stelle es online) *; und Ihre "Sicherheit" wird nichts tun, als Ihre Benutzer zu ärgern ... –

+5

Schreckliche Idee. Warum möchtest du so etwas tun? –

+0

Es geht dich nichts an. Wenn Sie es nicht kopieren möchten, teilen Sie es nicht an erster Stelle. –

Antwort

12

dieser Code für jede Kombination von ctrl arbeitet + Schlüssel Sie möchten 65 ist der ASCII-Code von 'A'

97 hinzufügen, wenn Sie auch für 'a'

$(function(){ 
    $(document).keydown(function(objEvent) {   
     if (objEvent.ctrlKey) {   
      if (objEvent.keyCode == 65) {       
       objEvent.disableTextSelect(); 
       return false; 
      }    
     }   
    }); 
});  

überprüfen wollen, sollten funktioniert, ich schrieb es direkt ohne zu testen ..

+5

@Marcx - Danke für das Beantworten eher als sofort das Abheben, weil Sie die Geschäftsanforderung nicht mögen. – Keltex

+4

+1 für die Lösung. @ Keltex Ich glaube nicht, dass einer der oben genannten Personen Ihre Frage tatsächlich abgelehnt hat. Aber Kommentare über die Praxis sind absolut gültig, und einige der Argumente könnten Ihrem Kunden etwas über die technische Machbarkeit dieser "Geschäftsanforderung" sagen. –

+1

In Chrome 37.0.2062.94, "Uncaught TypeError: undefined ist keine Funktion" in 'objEvent.disableTextSelect();'. – usandfriends

1

Einige Kunden ehrlich verstehen nicht, wie das Internet funktioniert, so sollten Sie Ihren Teil bei der Erklärung zu ihnen tun, dass alles, was dem Benutzer angezeigt wird, leicht gespeichert werden kann, unabhängig davon was tust du.

Im besten Fall können Sie bestimmte Dinge deaktivieren, was es für die einfachsten Benutzer schwierig macht, Text zu kopieren.

Wenn Sie das nicht tun, wird jemand einen Weg finden, um durch jede Lücke zu kommen, die Sie an Ort und Stelle setzen, und sie werden zu Ihnen kommen und sagen: "Hey, ich dachte, ich sagte dir, dass Sie das sperren „down

+1

@Allen. Schon getan ... leider ist mein Klient sehr beharrlich. Und er bezahlt die Rechnungen. – Keltex

+2

Solange er versteht, dass dies keine Form der Privatsphäre oder Piraterie Prävention erreicht und dass es Möglichkeiten gibt, leicht zu umgehen, UND sie wünschen dies speziell, würde ich damit einverstanden sein. –

+1

Art von "Solange es Ihnen nichts ausmacht, für Funktionen zu bezahlen, die keine Möglichkeit haben, tatsächlich zu arbeiten, kann ich sie entwickeln." Ich denke, es gibt eine Zeit, um miteinander auszukommen, aber ich würde mich schlecht fühlen, Geld zu nehmen, um Code zu schreiben, von dem ich wusste, dass er nicht funktionieren würde. – tvanfosson

4

Works für Windows (Strg + A) + MacOS (CMD + A) und verwenden preventDefault() statt return false:

$(function(){ 
    $(document).keydown(function(e) {  
    if ((e.ctrlKey || e.metaKey) && e.keyCode == 65) { 
     e.preventDefault(); 
    } 
    }); 
}); 
0

Es ist leicht, mit CSS:

body { 
    -webkit-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    -user-select: none; 
} 

Ich hoffe es hilft

0

Die angenommene Antwort funktioniert nicht mehr, weil disableTextSelect() seit jQuery 1.9 veraltet war, und später wurde es entfernt und jetzt nicht unterstützt.

Sie haben objEvent.PreventDefault(); zu verwenden - dies ist in den neuesten jQuery und auch neuesten Browsern:

$(function() { 
    $(document).keydown(function(objEvent) { 
     if (objEvent.ctrlKey) { 
      if (objEvent.keyCode == 65) { 
       objEvent.preventDefault(); 
      } 
     } 
    }); 
}); 
Verwandte Themen