加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

如何在HTML中创建一个不可见的字符,仍然可以选择文本?

发布时间:2020-12-14 23:26:03 所属栏目:资源 来源:网络整理
导读:背景故事 所以我正在做一个网络聊天作为一个侧面项目,我遇到的一个问题是使复制和粘贴消息的用户体验友好. 现在,所有元素都在自己的标签内组织,间隔开并用CSS规则分隔,如果你尝试复制聊天日志的一部分,那么它就是23:49userHello World. 我想到的解决方案是
背景故事

所以我正在做一个网络聊天作为一个侧面项目,我遇到的一个问题是使复制和粘贴消息的用户体验友好.

现在,所有元素都在自己的标签内组织,间隔开并用CSS规则分隔,如果你尝试复制聊天日志的一部分,那么它就是23:49userHello World.

我想到的解决方案是使用零宽度制表符分隔它们,仍然可以通过文本选择来拾取,并且粘贴为原始文本时只是一个普通的制表符.这不仅会在复制粘贴操作中将其分开,而且还可以使用awk解析它.

TL; DR

如何使用CSS或任何字符修改可打印的制表符(	),使其对布局不可见,但仍然会在文本选择中被拾取?

解决方法

由于所有元素都在自己的标记中组织,因此您可以使用:在内容中使用您想要作为分隔符的字符(使用font-size:0).据我所知,这个解决方案只适用于IE,因为其他浏览器不选择伪元素):
span:after {
    content: " ";
    font-size:0;
}

你可以在这个jsfiddle上看到它:http://jsfiddle.net/bc7jrdff/1/(记住只在IE上!)

另一种CSS可能是在生成页面时直接添加特殊字符,并应用:: first-letter伪元素.这个解决方案的问题是并非所有字符都算作第一个字母(空格不是)

使用JavaScript,您可以找到适用于所有浏览器的解决方案:将您的角色附加到元素(再次使用font-size:0):

// CSS
span.hiddenChar {
    font-size:0;
}

// JS
$(document).ready(function() {
    $("span").prepend("<span class='hiddenChar'> </span>");
});

你可以看到它在这里工作:http://jsfiddle.net/bc7jrdff/2/

或者如果您更喜欢没有jQuery的JavaScript:

// HTML
<span class="data">23:49</span><span class="data">user</span><span class="data">Hello World!</span>

// JS
var aux = document.querySelectorAll(".data");
for (x = 0; x < aux.length; x++) {
    aux[x].innerHTML = "<span class='hiddenChar'> </span>" + aux[x].innerHTML;
};

你可以在这个jsFiddle:http://jsfiddle.net/bc7jrdff/4/上看到

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读