js复制自定义HTML元素对象到剪贴板,复制内容添加小尾巴/版权信息
微wx笑
2022-10-19【前端开发】
2
0关键字:
js 剪贴板
js复制自定义HTML元素对象到剪贴板,复制内容添加小尾巴/版权信息实例代码:function execHandleHtml() { var selectionObj = window.getSelection(); var rangeObj = se
js复制自定义HTML元素对象到剪贴板,复制内容添加小尾巴/版权信息
实例代码:
function execHandleHtml() {
var selectionObj = window.getSelection();
var rangeObj = selectionObj.getRangeAt(0);
var docFragment = rangeObj.cloneContents();
//然后将docFragment渲染出来,获取其innerHTML即可。
var testDiv = document.createElement("div");
var body = document.getElementsByTagName("body")[0];
body.appendChild(testDiv);
testDiv.appendChild(docFragment);
//console.log("innerTEXT", testDiv.innerText);
var actionData = getActionHtml(testDiv.innerHTML);
//console.log("actionData", actionData);
testDiv.innerHTML = actionData;
selectionObj.empty();
var range = document.createRange();
range.selectNode(testDiv);
selectionObj.addRange(range);
document.execCommand("copy");
selectionObj.empty();
selectionObj.addRange(rangeObj);
//testDiv.remove();
}注意:testDiv.remove(); 不能调用,否则的话内容中包含的图片就无法复制,导致只能复制文本内容。
如果你希望在用户复制内容的时候,修改用户复制的内容,那么需要使用计时器
function onCopy(e) {
execHandleHtml();
return false;
}
//register event listener for copy events on document
document.addEventListener('copy',onCopy,true);将 execHandleHtml 函数中的 document.execCommand("copy"); 改为以下代码
setTimeout(function(){
document.execCommand("copy");
}, 100);如果不使用计时器的话,会产生循环调用的错误。
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/front/2022-10-19/1524.html



