通过clipboard.js成功实现。
官方文档及下载地址:https://clipboardjs.com/
下载下来解压文件可以看到有个demo文件夹,里面的演示很详细了,参照constructor-selector.html,完成了我想实现的功能。
/constructor-selector.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>constructor-selector</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!-- 1. Define some markup -->
<button class="btn" data-clipboard-text="1">Copy</button>
<button class="btn" data-clipboard-text="2">Copy</button>
<button class="btn" data-clipboard-text="3">Copy</button>
<!-- 2. Include library -->
<script src="../dist/clipboard.min.js"></script>
<!-- 3. Instantiate clipboard by passing a string selector -->
<script>
var clipboard = new ClipboardJS('.btn');
clipboard.on('success', function(e) {
console.log(e);
});
clipboard.on('error', function(e) {
console.log(e);
});
</script>
</body>
</html>
可以看到Copy按钮有一个data-clipboard-text属性,点击按钮后就复制了对应按钮中data-clipboard-text属性的文本。
例如:
<button class="btn" data-clipboard-text="自己想要的文本">Copy</button>
当点击以后复制的文本就是“自己想要的文本”。
即使是动态生成的多个按钮也可以用这种方法。
例如:
function(value){
var btn='<button class="btn" data-clipboard-action="copy" data-clipboard-text="这是个变化的值'+value+'">复制</button>'
return btn;
}