使用navigator.clipboard.writeText时如何保留&符号避免转义?
解决复制链接时
&被转成&的问题 问题根源是你使用了innerHTML获取内容——它返回的是元素内部的HTML解析结果,浏览器会自动把原始的&转义为HTML实体&,导致复制后的链接失效。
以下是几个可行的解决方案:
方案1:改用textContent获取纯文本
textContent会直接返回元素的原始纯文本内容,不会处理HTML实体,能完整保留&符号:
var copyLink = document.getElementById("link").textContent; navigator.clipboard.writeText(copyLink);
方案2:如果是<a>标签,直接读取href属性
如果你的#link元素是链接标签,直接读取它的href属性是最准确的,因为这里存储的就是原始的链接地址:
var copyLink = document.getElementById("link").href; navigator.clipboard.writeText(copyLink);
方案3:手动解码HTML实体(备用)
如果必须使用innerHTML,可以通过DOMParser解码实体内容:
var encodedLink = document.getElementById("link").innerHTML; var parser = new DOMParser(); var decodedText = parser.parseFromString(encodedLink, "text/html").body.textContent; navigator.clipboard.writeText(decodedText);
内容的提问来源于stack exchange,提问作者Blog Khóa Học
相关产品推荐
相关产品推荐

