我想从html元素中复制数据集中的一些内容。
HTML代码
<p id="web-password-@{{ id }}" data-password="@{{ password }}"
data-state="0">@{{ hidePassword }}</p>
<button class="mdl-button mdl-js-button mdl-button--icon">
<i data-event="copy" data-obj="util" data-target="web-password-@{{ id }}"
class="material-icons clickable-icon">content_copy</i>
</button>
复制方法
通过data-event和data-obj属性调用该方法。
copy (args) {
let copyText = document.getElementById(args.target).dataset.password;
console.log(copyTest); // output: specific password
document.execCommand("Copy");
}
像这样,它不会将内容复制到剪贴板。有人看到错误吗?
更新
以下代码适用于htmlelement的实际textContent。
但我需要复制数据密码属性
中的值let range = document.createRange();
let selection = window.getSelection();
let node = document.getElementById(args.target);
range.selectNodeContents(node);
selection.removeAllRanges();
selection.addRange(range);
document.execCommand("copy");
可能的解决方案
所以我在隐藏的输入字段中写入值,选择它,复制它并再次删除临时隐藏的输入字段。
但它什么都没复制。?
let copyValue = document.getElementById(args.target).dataset.password;
document.body.insertAdjacentHTML('beforeend', `<input hidden id="temp-copy" value="${copyValue}">`);
let copyText = document.getElementById('temp-copy');
copyText.select();
document.execCommand("copy");
copyText.remove();
答案 0 :(得分:2)
<强>解决方案强>
<强>更新强>
更好的解决方案。
copyPassword (args) {
function handler(event) {
event.clipboardData.setData('text/plain', document.getElementById(args.target).dataset.password);
event.preventDefault();
document.removeEventListener('copy', handler, true);
}
document.addEventListener('copy', handler, true);
document.execCommand('copy');
}
替代。 这也有效。
let range = document.createRange();
let selection = window.getSelection();
let password = document.getElementById(args.target).dataset.password;
document.body.insertAdjacentHTML('beforeend', `<p id="temp-copy">${password}</p>`);
let node = document.getElementById('temp-copy');
range.selectNodeContents(node);
selection.removeAllRanges();
selection.addRange(range);
document.execCommand("copy");
document.getElementById('temp-copy').remove();
答案 1 :(得分:0)
复制命令将当前选择复制到剪贴板。因此,您需要在复制前选择输入中的文本:
let input = document.getElementById(args.target);
input.select();
document.execCommand("Copy");
如果不支持或启用该命令,您可能还需要检查execCommand
的{{1}}的返回值。
更新
如果您尝试复制的节点不 false
或input
,您可以选择以下文字:
textarea
答案 2 :(得分:0)
请参阅Dean Taylor的回答:https://stackoverflow.com/a/30810322/2879085
这是一个有效的例子:
ret=0
ret=22
ret=0
&#13;
update t1
set t1.value=t2.value
from tbl t1
join
tbl t2 on
t1.start=t2.start and t1.end=t2.end and t2.value not like 'pending'
and t1.value like 'pending'
&#13;