首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止剪贴板回车符变成换行符

如何防止剪贴板回车符变成换行符
EN

Stack Overflow用户
提问于 2019-05-27 01:31:06
回答 1查看 536关注 0票数 2

我正在编写一个用于教学目的的加密算法,并且我需要能够复制/粘贴unicode字符。

问题是剪贴板(不仅仅是api)将回车符(十六进制: 0x0d,十进制: 13)修改为换行符(十六进制: 0x0a,十进制: 10)。

我怎样才能防止这种行为?

代码语言:javascript
复制
let $ = s => document.querySelector(s);

let cr = String.fromCharCode(0x0d);

$("#one").addEventListener("click", function (e)
{
	navigator.clipboard.writeText(cr);
});

$("#two").addEventListener("change", function (e)
{
	$("#out").textContent = "0x" + this.value.charCodeAt(0).toString(16).padStart(2, 0);
});
代码语言:javascript
复制
<button id="one">copy cr to clipboard</button><br>
<textarea type="text" id="two"></textarea><br>
<div id="out"></div>

您可以通过单击按钮将回车符保存到剪贴板中,然后将其粘贴到文本区域中来测试它。然后在文本区之外单击以触发更改事件。它将显示0x0a,因为剪贴板已将cr转换为lf。

PS:我不得不从引导模式转到传统模式,因为它有buggy,真的很烦人

EN

回答 1

Stack Overflow用户

发布于 2019-05-27 02:07:38

与剪贴板无关:

代码语言:javascript
复制
const $ = s => document.querySelector(s);
const cr = String.fromCharCode(0x0d);
const firstCharAsHex = v => "0x" + v.charCodeAt(0).toString(16).padStart(2, 0);

$("#one").addEventListener("click", async function (e) {
  navigator.clipboard.writeText(cr);
  
  const v = await navigator.clipboard.readText();
  console.log("Written: " + firstCharAsHex(v));
});


$("#two").addEventListener("paste", function (e) {
  const v = e.clipboardData.getData('text/plain');
  console.log("Being paste: " + firstCharAsHex(v));
});

$("#two").addEventListener("change", function (e) {
  const v = this.value
  console.log("After paste: " + firstCharAsHex(v));
});
代码语言:javascript
复制
<button id="one">Run</button><br>
<textarea type="text" id="two"></textarea><br>

Textarea将CR规范化为LF。请参阅specs

由于历史原因,元素的值以三种不同的方式进行标准化,以实现三种不同的目的。

  • raw value是最初设置的值。It is not normalized.
  • The API value是在value IDL属性、textLength IDL属性以及maxlengthminlength内容属性中使用的值。对它进行了规范化,以便换行符使用U+000A换行符(LF) characters.
  • Finally, value,正如本规范的表单提交和其他处理模型中所使用的那样。它经过标准化,以便换行符使用U+000D回车符和换行符( U+000A wrap )字符对,此外,如果必要,在给定元素的wrap属性的情况下,还会插入额外的换行符,以便以给定宽度换行文本。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56315877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档