javascript - JavaScript 复制到剪贴板只工作一次
问题描述
试图到处寻找,没有找到解决方案。我正在使用这个 JS:
function copy(containerid) {
var range = document.createRange();
document.getElementById(containerid).style.display = "block";
range.selectNode(document.getElementById(containerid));
window.getSelection().addRange(range);
document.execCommand("Copy");
document.getElementById(containerid).style.display = "none";
}
但是,在我的视图中使用它我只能执行一次,或者 containseid 保持相同的值。我的观点:
<input type="text" value="x1" id="x1" style="display:none"><input type="text" value="x2" id="x2" style="display:none">
<img src="~/images/new-post-16.png" onclick="copy('x1')"/> <img src="~/images/phone-30-16.png" onclick="copy('x2')" />
我尝试将函数相乘并仅针对一个元素调用它,但它仍然只复制了一个实例,无论是 x1 还是在重新加载页面 x2 之后。有任何想法吗?元素必须隐藏。
解决方案
您正在尝试将选择添加到位于不同控件中的现有选择中。那是行不通的。您基本上是在尝试在两个不同的文本输入中使用多光标。
如果您window.getSelection().removeAllRanges();
在您之前清除您的选择,window.getSelection().addRange(range);
它将起作用。
这也是@Hari Das 代码起作用的原因:selectAll
替换所选范围,而不尝试添加它。
推荐阅读
- go - 具有缓冲作业和固定轮询间隔的工作池
- java - 过度依赖一个arrayList
- python - 如何使用 Python/Tweepy 将推文上传到 SQLite 数据库?
- css - CSS过渡不能从下到上工作
- python-3.x - 等价于 bash "|" 在python3中
- android - 在 android webView 中接收 net::ERR_CONTENT_LENGTH_MISMATCH 错误
- django - 对 API 相关性和 Django 感到困惑
- java - 通过 ftp 发送的 JAVA Tar
- angular - 为什么管道异步运算符会在浏览器控制台中导致 ExpressionChangedAfterItHasBeenCheckedError 消息?
- gradle - Gradle 构建存储库优先级