clipboard-sdk
Version:
复制文本时自动添加版权小尾巴
40 lines (38 loc) • 2.1 kB
JavaScript
class MyClipboard {
constructor(options = {}) {
this.data = Object.assign(this.initDef(), options);
this.initClipboard();
}
initClipboard() {
let node = document.querySelector(this.data.select);
node.addEventListener('copy', (e) => {
this.setClipboard(e);
});
}
setClipboard(event) {
event.preventDefault();
var node = document.createElement('div');
node.appendChild(window.getSelection().getRangeAt(0).cloneContents());
//getRangeAt(0)返回对基于零的数字索引与传递参数匹配的选择对象中的范围的引用。对于连续选择,参数应为零。
var htmlData = `<div>${node.innerHTML}${this.data.html}</div>`;
var textData = window.getSelection().getRangeAt(0) + this.data.text;
if (event.clipboardData) {
// html是数据拷贝到富文本时的值
event.clipboardData.setData("text/html", htmlData);
//setData(剪贴板格式, 数据) 给剪贴板赋予指定格式的数据。返回 true 表示操作成功。
event.clipboardData.setData("text/plain", textData);
}
else if (window.clipboardData) {
//window.clipboardData的作用是在页面上将需要的东西复制到剪贴板上,提供了对于预定义的剪贴板格式的访问,以便在编辑操作中使用。
return window.clipboardData.setData("text", textData);
}
}
initDef() {
return {
select: "body",
html: `著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:<a href="https://juejin.cn/user/3685218708368519">李老汉</a><br />来源: <a href="https://juejin.cn/user/3685218708368519">瑞旗家园604</a>`,
text: "\n\n著作权归作者所有。\n商业转载请联系作者获得授权,非商业转载请注明出处。\n作者:李老汉\n来源:瑞旗家园604"
};
}
}
export { MyClipboard as default };