<!DOCTYPE html>
<html>
<head>
<title>ClipBoard.js点击复制</title>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script>
</head>
<body>
<!-- 获取数据的源头,如果元素是表单元素,获取的是value值 -->
<div type="text" id="content">
复制的内容
</div>
<!-- data-clipboard-target的值为要获取数据源的ID -->
<!-- data-clipboard-action的值为执行动作的类型,如copy与cut -->
<!-- data-clipboard-action如果没有定义,则默认为copy,如果定义为cut,只对input或textarea元素有效 -->
<button id="copy" data-clipboard-target="#content" data-clipboard-action="copy">
触发动作元素
</button>
<!-- 事实上,你甚至不需要从另一个元素来复制内容,上面两个标签都可以取消-->
<!-- 你仅需要给目标元素设置一个 data-clipboard-text 属性就可以了-->
<!-- <button id="copy" data-clipboard-text="复制的内容">触发动作元素</button> -->
<script type="text/javascript">
//初始化(必须)
var clipboard = new ClipboardJS('#copy');
//高级用法(可省略,选择性使用)
//如果你希望动态设置 target,需要返回一个节点
var clipboard = new Clipboard('#copy',{
target: function(trigger) {
return trigger.nextElementSibling;
}
});
//如果你希望动态设置 text,你需要返回一个字符串
var clipboard = new Clipboard('#copy', {
text: function(trigger) {
return trigger.getAttribute('data-word');
}
});
// 动作执行成功后的回调函数(必须)
clipboard.on('success', function (e) {
//触发的动作 如:copy,cut等
console.info('Action:', e.action)
//执行动作后获取的文本
console.info('Text:', e.text);
//触发的动作的元素
console.info('Trigger:', e.trigger);
});
// 动作执行失败后的回调函数(可省略,选择性使用)
clipboard.on('error', function (e) {
//触发的动作 如:copy,cut等
console.error('Action:', e.action);
//触发的动作的元素
console.error('Trigger:', e.trigger);
});
//清除事件对象(可省略,选择性使用)
//如果是单页应用,可能想要更加精确地管理 DOM 的生命周期,可以清理事件以及创建的对象
clipboard.destroy();
</script>
</body>
</html>