Je gère l'événement dblclick sur une durée dans mon application Web. Un effet secondaire est que le double-clic sélectionne du texte sur la page. Comment puis-je empêcher cette sélection de se produire?
294
Je gère l'événement dblclick sur une durée dans mon application Web. Un effet secondaire est que le double-clic sélectionne du texte sur la page. Comment puis-je empêcher cette sélection de se produire?
function clearSelection() {
if(document.selection && document.selection.empty) {
document.selection.empty();
} else if(window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
}
}
Vous pouvez également appliquer ces styles à la plage pour tous les navigateurs non IE et IE10:
span.no_selection {
user-select: none; /* standard syntax */
-webkit-user-select: none; /* webkit (safari, chrome) browsers */
-moz-user-select: none; /* mozilla browsers */
-khtml-user-select: none; /* webkit (konqueror) browsers */
-ms-user-select: none; /* IE10+ */
}
-ms-user-select: none;
voir blogs.msdn.com/b/ie/archive/2012/01/11/… @PaoloBergantinoEn clair javascript:
Ou avec jQuery:
la source
return false
utiliséevent.preventDefault()
qui ne tue aucun autre gestionnaire que vous pourriez avoir lors du mousedown.element
s'agit d'une zone de texte, oui.Pour empêcher la sélection de texte UNIQUEMENT après un double-clic:
Vous pouvez utiliser une
MouseEvent#detail
propriété. Pour les événements mousedown ou mouseup, il s'agit de 1 plus le nombre de clics actuel.Voir https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
la source
(event.detail === 2)
pour vraiment empêcher SEULEMENT le double-clic (et non le triple-clic, etc.)FWIW, j'ai défini
user-select: none
l' élément parent de ces éléments enfants que je ne veux pas sélectionner d'une manière ou d'une autre lorsque vous double-cliquez n'importe où sur l'élément parent. Et il fonctionne! Ce qui est cool, c'est que lacontenteditable="true"
sélection de texte, etc. fonctionne toujours sur les éléments enfants!Alors comme:
la source
style="user-select: note"
partout a trié le problème que j'essayais de résoudre :)Une simple fonction Javascript qui rend le contenu à l'intérieur d'un élément de page non sélectionnable:
la source
Pour ceux qui recherchent une solution pour Angular 2+ .
Vous pouvez utiliser la
mousedown
sortie de la cellule du tableau.Et éviter si le
detail > 1
.La
dblclick
sortie continue de fonctionner comme prévu.la source
ou, sur mozilla:
Sur IE,
la source
document.body
.Ancien thread, mais j'ai trouvé une solution qui, je pense, est plus propre car elle ne désactive pas toutes les paires liées à l'objet et empêche uniquement les sélections de texte aléatoires et indésirables sur la page. C'est simple et ça marche bien pour moi. Voici un exemple; Je veux empêcher la sélection de texte lorsque je clique plusieurs fois sur l'objet avec la classe "flèche droite":
HTH!
la source
Si vous essayez d'empêcher complètement la sélection de texte par n'importe quelle méthode ainsi que sur un double-clic uniquement, vous pouvez utiliser l'
user-select: none
attribut css. J'ai testé dans Chrome 68, mais selon https://caniuse.com/#search=user-select, cela devrait fonctionner dans les autres navigateurs utilisateur normaux actuels.Comportemental, dans Chrome 68, il est hérité par les éléments enfants et ne permettait pas de sélectionner le texte contenu d'un élément même si le texte entourant et incluant l'élément était sélectionné.
la source
Pour empêcher IE 8 CTRL et SHIFT, cliquez sur la sélection de texte sur un élément individuel
Pour empêcher la sélection de texte sur le document
la source
J'ai eu le même problème. Je l'ai résolu en basculant vers
<a>
et en ajoutantonclick="return false;"
(de sorte que cliquer dessus n'ajoutera pas une nouvelle entrée à l'historique du navigateur).la source