web-dev-qa-db-fra.com

Comment désactiver le copier-coller (navigateur)

J'essaie 2 alternatives:

  • Ignorer le clic droit
  • Ignorer ctrl + Cctrl + A

Ceci est mon code:

function noMenu() {
  return false;
}
function disableCopyPaste(Elm) {
  // Disable cut/copy/paste key events
  Elm.onkeydown = interceptKeys
  // Disable right click events
  Elm.oncontextmenu = function() {
    return false
  }
}
function interceptKeys(evt) {
  evt = evt||window.event // IE support
  var c = evt.keyCode
  var ctrlDown = evt.ctrlKey||evt.metaKey // Mac support
  // Check for Alt+Gr (http://en.wikipedia.org/wiki/AltGr_key)
  if (ctrlDown && evt.altKey) return true
  // Check for ctrl+c, v and x
  else if (ctrlDown && c==67) return false // c
  else if (ctrlDown && c==86) return false // v
  else if (ctrlDown && c==88) return false // x
  // Otherwise allow
  return true
}

Et voici mon HTML:

<body class="node88" oncontextmenu="return noMenu();" onkeydown="return disableCopyPaste();">

La fonction noMenu() fonctionne, mais disableCopyPaste() ne fonctionne pas.

10
Rys

Tu ne peux pas.

Vous pouvez en quelque sorte essayer de bloquer certains vecteurs (comme des hacks pour rendre le clic droit plus difficile, en interceptant ctrl+cce qui rend difficile la sélection de texte)… Mais ils ne feront qu’une sorte de travail et il est impossible de bloquer tous les vecteurs (éditer -> copier? voir la source? wgetname__? etc…).

Si vous essayez de protéger votre contenu d'utilisateurs moins techniques, ces méthodes peuvent vous convenir… Mais, comme le suggèrent les commentaires qui suivent, elles frustreront davantage les utilisateurs plus techniques.

Si vous avez un contenu sensible à protéger, vous pouvez envisager de l'intégrer dans un blob Flash ou un fichier PDF DRM. Il est encore possible de procéder à une ingénierie inverse, mais il faudra un attaquant légèrement plus intelligent.

17
David Wolever

Au lieu d'essayer de contrôler les raccourcis clavier des utilisateurs (il est possible que certains navigateurs détectent cela comme un code malveillant), vous pouvez désactiver la sélection de texte sur votre page. Bien que cela n'empêche pas la copie des données comme indiqué dans vos commentaires.

<!-- Disable Copy and Paste-->
<script language='JavaScript1.2'>
function disableselect(e) {
    return false
}

function reEnable() {
    return true
}

document.onselectstart = new Function (&quot;return false&quot;)

if (window.sidebar) {
    document.onmousedown = disableselect
    document.onClick = reEnable
}
</script>

Placez ceci dans votre 

    <head> </head> 

balises et l'utilisateur ne peut pas sélectionner du texte sur votre page.

Trouvé sur http://myblog-log.blogspot.com/2007/06/disable-copy-and-paste.html

10
Rich

Javascript:

//disable mouse drag select start

document.onselectstart = new Function('return false');

function dMDown(e) { return false; }

function dOClick() { return true; }

document.onmousedown = dMDown;

document.onclick = dOClick;

$("#document").attr("unselectable", "on"); 

//disable mouse drag select end

//disable right click - context menu

document.oncontextmenu = new Function("return false");


//disable CTRL+A/CTRL+C through key board start

//use this function


function disableSelectCopy(e) {

// current pressed key

    var pressedKey = String.fromCharCode(e.keyCode).toLowerCase();

    if (e.ctrlKey && (pressedKey == "c" || pressedKey == "x" || pressedKey == "v" || pressedKey == "a")) {

        return false;

    }

}

document.onkeydown = disableSelectCopy;


//or use this function

$(function () {

    $(document).keydown(function (objEvent) {

        if (objEvent.ctrlKey || objEvent.metaKey) {

            if (objEvent.keyCode == 65 || objEvent.keyCode == 97) {

                return false;

            }

        //}

        }

    });

});

CSS:

//disable selection through CSS for different browsers

#document, #ctl00_MasterPageBodyTag{
    user-select: none;
    -ms-user-select: none;
    -o-user-select:none;
    -moz-user-select: none;
    -khtml-user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
}

//where #document is the div for which select needs to be disabled and #ctl00_MasterPageBodyTag is the id of the body tag.
6
Phibinary

Pourquoi ne pas essayer de rendre le texte non sélectionnable? 

.unselectable {
  -webkit-user-select: none;  /* Chrome all / Safari all */
  -moz-user-select: none;     /* Firefox all */
  -ms-user-select: none;      /* IE 10+ */
  user-select: none;          /* Likely future */       
}


/*Mobile*/

-webkit-touch-callout: default   /* displays the callout */
-webkit-touch-callout: none      /* disables the callout */

Je vais aussi très bientôt éditer cette réponse. Je regarde le même problème. Mais j'ai trouvé des informations sur la façon d'écrire. J'écris une fonction JS qui, lorsque l'utilisateur a copié le presse-papiers, est écrasée. Quoi qu'il en soit, je vais poster que lorsque vous avez terminé. J'expérimente toujours avec. Vous pouvez lire l'article que j'ai trouvé sur les astuces css.

https://css-tricks.com/copy-paste-the-web/

3
user3806549

Vous pouvez contrôler quel texte est mis dans le presse-papier:

document.addEventListener('copy', function(e) {
    e.clipboardData.setData('text/plain', 'Please do not copy text');
    e.clipboardData.setData('text/html', '<b>Please do not copy text</b>');
    e.preventDefault();
});

https://developer.mozilla.org/en-US/docs/Web/Events/copy

1
dramus

Vous pouvez utiliser CSS pour ne permettre aucune sélection de texte. Par conséquent, aucune copie de texte ne sera possible.

Ajoutez les CSS et JS ci-dessous dans le corps:

CSS:

    <style>
    .unselectable
    {
        -moz-user-select:none;
        -webkit-user-select:none;
        cursor: default;
    }
    html
    {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        -khtml-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        -webkit-tap-highlight-color: rgba(0,0,0,0);
    }
</style>

JS:

<script id="wpcp_css_disable_selection" type="text/javascript">
var e = document.getElementsByTagName('body')[0];
if(e)
{
    e.setAttribute('unselectable',on);
}
</script>
0
harkirat1892
$('some.selector').bind('cut copy paste', function (e) {
    e.preventDefault();
});

Cela fonctionne dans Chrome, Firefox, Safari, IE11 et Edge. Pour mes tests, je travaillais avec un <div contenteditable>. Article d'origine:

https://www.codexworld.com/disable-mouse-right-click-cut-copy-paste-using-jquery

0
user393274

Protection du site Web contre la copie

http://www.securebit.xyz/

Visitez la page exemple pour obtenir une preuve avant de la déclarer spam ou publicité. Essayez de copier le contenu de la page exemple.

http://www.securebit.xyz/

Pour plus de détails et d'informations d'achat, écrivez-nous à l'adresse [email protected]

Avantages

Prise en charge de toutes les langues (anglais, hindi, tamoul, malayalam, etc.) Prise en charge de tous les CMS, y compris Wordpress, Drupal, Joomla, etc. Le contenu ne peut pas être copié à partir de la source de page. le contenu ne peut pas être copié à l'aide des outils de développement. Le contenu ne peut pas être copié à l'aide de modules complémentaires/extensions sur un navigateur. Le contenu ne peut pas être copié par désactivation de javascript.

Si vous recherchez un code HTML simple pour désactiver COPY et PASTE sur un élément spécifique, utilisez le code ci-dessous. Vous pouvez même bloquer toute la page en la mettant sur la balise body.

<div oncontextmenu="return false" onkeydown="if ((arguments[0] || window.event).ctrlKey) return false"></div>

oncontextmenu = "return false" onkeydown = "if ((arguments [0] || window.event) .ctrlKey) renvoie false"

0
Prem Acharya