为什么Google Chrome会在所选文字后始终添加空间?

Mat*_*ron 30 javascript css browser google-chrome

为什么谷歌浏览器在用3次鼠标点击选择文本时总是在行末添加空格?

您认为我们可以使用CSS或JavaScript来删除它吗?(不好主意,但只是试图避免这件事)

块:

在此输入图像描述

当我在文本上单击3次时:

在此输入图像描述

一个gif例子:

在此输入图像描述

<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>
Run Code Online (Sandbox Code Playgroud)

小智 14

我在Chrome和Firefox之间进行了很多测试,以找出显示,选择和复制方法的常见模式.

谷歌浏览器

Google Chrome会忽略HTML中的所有内部和外部元素空白字符,除非它们位于文本中.文本之间的所有空白字符都显示为单个空格字符,但保留字符的实际值.这适用于具有内联或块显示样式的两个元素.

除了body元素的最后一个元素之外,每个元素在使用三击或拖动选择选择它时在末尾显示一个空格.根据元素的显示样式,该空间不同.

当复制文本时,块显示元素会在其中附加2个CRLF字符,而内联显示元素仅导致1个CRLF.空白字符在复制和粘贴之间保持,但仅限于一个字符.

火狐

Firefox忽略外部元素空白,但内部元素空白字符的结果很有趣.所有空白字符都转换为空格,除了起始字符,每个非空白字符之间限制为一个空格.仅显示和选择最后一个空格.

三次单击选择和复制文本会根据该元素的显示样式生成不同的值.

内联显示

无论元素包含什么,复制的文本前后总是有一个空格.每个空白字符都被删除.

块显示

文本前的空白字符按原样保留,结束的空白字符转换为空格.


所以要回答你的问题,这完全取决于浏览器如何实现显示,选择和复制方法.浏览器之间会有所不同,我不建议添加CSS,JS和HTML黑客.从测试中,我认为选择与元素之间的新行无关,因为删除换行不会修复额外的空间选择.


Raj*_*esh 8

正如@ brendan所说,它因newLine人物而.

尝试使用以下html创建一个虚拟HTML页面并尝试,

<html>
  <body>
    <h1>Hello world</h1>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后添加另一个元素,然后重试

<html>
  <body>
    <h1>Hello world</h1>
    <span>Test</span>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)