我正在尝试对文本区域中的字符串进行编码,以便可以输出mailto链接的编码结果。空格和特殊字符的编码很好,但换行符不是,它们只是编码为空格。 如何编码换行符?
if (id == 'subject' || id == 'body') {
let str = output.innerText;
str = encodeURIComponent(str);
// str = str.replace(/\n/g, "%0A").replace(/ /g, "%20").replace(/&/g, "%26");
output.innerText = str;
}
我也尝试过这种方法,该方法也不起作用:
str = encodeURIComponent(str).replace(/\n/g, '%0D%0A');
这是我当前输出的外观:
mailto:mckeever02@gmail.com?body=Testing%20Should%20be%20a%20line%20break%20before%20this%20sentence
请注意,换行符仅被编码为%20
(空格)。有什么想法吗?
答案 0 :(得分:2)
将换行符替换为%0A
。使用value
而非innerHTML
/ innerText
从textarea获取文本
const ta = document.getElementById("ta");
const val = ta.value;
console.log(encodeURIComponent(val));
<textarea id="ta">
First line
Second line
</textarea>
答案 1 :(得分:1)
请参阅我的示例代码段。
我只是使用innerHtml从textarea读取数据以提供新行并使用简单的encodeURIComponent。新行将转移到%0A
,空格将转移到{
%20
可能您的问题是使用innerText而不是innerHTML。 innerText没有换行。
const text = document.querySelector('textarea').innerHTML;
console.log(encodeURIComponent(text))
<textarea>
Test
aaaa
bbbb ccc
dddd
</textarea>