34 votes

Pourquoi Google Chrome ajoute-t-il toujours un espace après le texte sélectionné ?

Pourquoi Google Chrome ajoute-t-il toujours un espace à la fin d'une ligne lorsque vous sélectionnez un texte en 3 clics de souris ?

Pensez-vous que nous pouvons faire quelque chose en utilisant CSS ou JavaScript pour le supprimer ? (Mauvaise idée, mais j'essaie juste d'éviter ce genre de chose)

Le bloc :

enter image description here

Lorsque je clique 3 fois sur le texte :

enter image description here

Un exemple de gif :

enter image description here

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is established to be used for illustrative examples in documents. You may use this
    domain in examples without prior coordination or asking for permission.</p>
    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>

1 votes

Je me demande si cela a un rapport avec le caractère /n à la fin d'une chaîne de caractères ?

0 votes

Pouvez-vous nous dire pourquoi vous vous en souciez ? Quel est le problème qu'il cause ? Que tentez-vous de résoudre ?

0 votes

J'essaie de comprendre pourquoi ce comportement est présent sur "Chrome". Je n'ai pas ce problème dans Firefox. Je veux comprendre quel est le choix pour avoir cet espace.

16voto

10100111001 Points 1437

J'ai effectué de nombreux tests entre Chrome et Firefox pour trouver un modèle commun pour leurs méthodes d'affichage, de sélection et de copie.

Google Chrome

Google Chrome ignore tous les caractères d'espacement des éléments internes et externes du HTML, sauf s'ils se trouvent à l'intérieur du texte. Tous les caractères d'espacement entre les textes sont affichés comme un caractère d'espacement singulier, mais la valeur réelle du caractère est conservée. Cela s'applique aux éléments qui ont le style d'affichage en ligne ou en bloc.

Chaque élément, à l'exception du dernier élément de l'élément body, affiche un espace à la fin lorsqu'il est sélectionné par un triple clic ou un glisser-déposer. Cet espace est différent selon le style d'affichage des éléments.

Un élément d'affichage en bloc entraîne l'ajout de deux caractères CRLF lorsque le texte est copié, tandis qu'un élément d'affichage en ligne n'entraîne jamais qu'un seul CRLF. Les caractères d'espacement sont maintenus entre le copier et le coller mais sont limités à un seul caractère.

Firefox

Firefox ignore les espaces blancs des éléments extérieurs mais obtient des résultats intéressants avec les espaces blancs des éléments intérieurs. Tous les caractères d'espacement sont convertis en espaces, à l'exception du caractère de départ, avec une limite d'un espacement entre chaque caractère d'espacement. Seul le dernier espace est affiché et sélectionné.

La sélection par triple clic et la copie du texte donnent des valeurs différentes en fonction du style d'affichage de cet élément.

Affichage en ligne

Il y a toujours un espace avant et après le texte qui est copié, quel que soit le contenu des éléments. Tous les caractères d'espacement sont supprimés.

Affichage du bloc

Les caractères d'espacement avant le texte sont conservés tels quels et le caractère d'espacement final est converti en espace.


Pour répondre à votre question, tout dépend de la façon dont les navigateurs mettent en œuvre les méthodes d'affichage, de sélection et de copie. Cela varie d'un navigateur à l'autre et je ne recommande pas d'ajouter des bidouillages CSS, JS et HTML. D'après les tests, je pense que la sélection n'a rien à voir avec la nouvelle ligne entre les éléments, car la suppression de la nouvelle ligne ne corrige pas la sélection de l'espace supplémentaire.

9voto

Rajesh Points 3413

Comme suggéré par @ brendan c'est à cause de newLine des personnages.

Essayez de créer une page HTML factice avec le html suivant et essayez,

<html>
  <body>
    <h1>Hello world</h1>
  </body>
</html>

puis ajouter un autre élément et essayer à nouveau

<html>
  <body>
    <h1>Hello world</h1>
    <span>Test</span>
  </body>
</html>

0 votes

Ok, mais ce code n'ajoute plus d'espace sur firefox, pourquoi seulement google chrome ? C'est un bug ?

0 votes

Peut-être. Il faudra chercher beaucoup pour trouver le vrai cousin. Je suppose que vous pouvez utiliser cette réponse pour orienter vos recherches.

0 votes

@MathieuLescaudron cela pourrait aider : w3.org/TR/html4/types.html#type-cdata . Il est dit "Ignorer les sauts de ligne, Remplacer chaque retour chariot ou tabulation par un espace simple."

3voto

Lemni Points 98

Vous avez probablement déjà vu ce groupe google mais sinon, il pourrait vous aider :

Comment double-cliquer sur un mot sans sélectionner ou mettre en évidence un espace supplémentaire après le mot ?

Ce n'est pas vraiment pour le même problème mais il semble qu'il y ait une différence de comportement entre les différents OS.

Je ne peux pas le tester maintenant, mais il y a peut-être le même comportement pour votre problème.

2voto

Résoudre dans Chrome à partir de la version 69.0.3497.81

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X