2015-12-31 1 views
0

J'ai déjà posé cette question sur StackExchange Webmasters. J'ai ajouté un code html/javascript sur mon site Web blogger pour désactiver la copie du contenu. Le code est:Comment autoriser la sélection de certains textes sur les publications désactivées?

<script src='demo-to-prevent-copy-paste-on-blogger_files/googleapis.js'></script><script type='text/javascript'> if(typeof document.onselectstart!="undefined") {document.onselectstart=new Function ("return false"); } else{document.onmousedown=new Function ("return false");document.onmouseup=new Function ("return false"); } </script> 

Si je veux autoriser la sélection de certains textes de la page uniquement? Par exemple, si je veux fournir des codes à mon lecteur, comment puis-je leur permettre de copier le code, mais pas tout le message?

Merci à l'avance :) Mon site → www.aryanpoudel.com.np

Répondre

2

Tout d'abord, vous ne pouvez pas interdire de copier du texte à partir de votre site Web. Tout le texte est envoyé au navigateur de l'utilisateur et peut donc également être copié. Cette mesure n'autorise que les utilisateurs sans beaucoup d'expérience informatique à ne pas copier le texte.

Pour résoudre votre problème, il est préférable d'utiliser CSS à cette fin. Il existe une propriété CSS appelée user-select qui peut être définie sur none. Cela interdit à l'utilisateur la sélection du texte sur l'élément, la propriété est définie sur. Veillez à utiliser également les préfixes du navigateur pour la sélection par l'utilisateur, car il n'est pas encore pris en charge par tous les principaux navigateurs sans préfixe.

.element { 
    -webkit-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 

Vous pouvez trouver la compatibilité du navigateur ici: http://caniuse.com/#feat=user-select-none

Si vous voulez faire partie seulement de votre page sélectionnée, vous pouvez le faire en ajoutant la propriété de sélection par l'utilisateur à l'élément body de votre page ou au sélecteur *. Si vous voulez rendre un élément sélectionnable, réinitialisez simplement les styles CSS en changeant la propriété en user-select: text.

+0

Quelqu'un peut-il répondre dans un langage simple? Je suis juste un débutant dans le domaine du codage. Dites-moi simplement où placer le code. :) –

+0

Avez-vous un fichier CSS avec tous les styles de votre page? Ajoutez à ce fichier le code ci-dessus et remplacez .element par le corps. Cela désactive la sélection pour chaque élément. Si vous voulez activer la sélection pour un élément, vous devez donner à cet élément une classe (dans le html) comme sélectionnable. Vous pouvez ensuite donner à des éléments de cette classe la propriété user-select: text (similaire à l'exemple ci-dessus, mais avec .selectable et user-select: text –

0

Une autre façon d'obtenir ce que vous cherchez est:

function getSelectedText() { 
 
    if (window.getSelection) { 
 
    txt = window.getSelection(); 
 
    } else if (window.document.getSelection) { 
 
    txt =window.document.getSelection(); 
 
    } else if (window.document.selection) { 
 
    txt = window.document.selection.createRange().text; 
 
    } 
 
    return txt; 
 
} 
 
function removeSelection() { 
 
    if (window.getSelection) { 
 
    if (window.getSelection().empty) { 
 
     window.getSelection().empty(); 
 
    } else if (window.getSelection().removeAllRanges) { 
 
     window.getSelection().removeAllRanges(); 
 
    } 
 
    } else if (document.selection) { 
 
    document.selection.empty(); 
 
    } 
 
} 
 
var wordSelectables = ["number", "video", "computer"]; 
 
document.onmouseup = function() { 
 
    var selText = getSelectedText().toString(); 
 
    if (wordSelectables.indexOf(selText) == -1) { 
 
    removeSelection(); 
 
    } 
 
}
number video <p>video</p>computer 
 

 
<input value="videocomputer">

+0

Cette solution n'empêche pas la copie: vous pouvez simplement copier avant de relâcher la souris cliquez sur (événement mouseup) Cela signifie: souris vers le bas - sélectionnez - CTRL + C - souris vers le haut –

+0

@ ssc-hrep3 ce n'est pas la solution complète, mais seulement la première ébauche sur la façon dont cela peut être résolu sans css.Il est très facile d'ajouter les événements clavier et empêcher la copie.En tout cas, il n'y a pas de moyen sécurisé pour empêcher le raclage de l'utilisateur.J'apprécie votre réponse. – gaetanoM