首页 > 解决方案 > 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 之后。有任何想法吗?元素必须隐藏。

标签: javascript

解决方案


您正在尝试将选择添加到位于不同控件中的现有选择中。那是行不通的。您基本上是在尝试在两个不同的文本输入中使用多光标。

如果您window.getSelection().removeAllRanges();在您之前清除您的选择,window.getSelection().addRange(range);它将起作用。

这也是@Hari Das 代码起作用的原因:selectAll 替换所选范围,而不尝试添加它。


推荐阅读