我使用的代码是在用户复制选择内容(ctrl-c)后在其中插入包含当前页面网址的文本,并在页面的隐藏部分中执行此操作,但是当用户按下ctrl- c选择一些内容,您是否有某种方法可以复制并包含当前页面的URL,而又不会丢失选择内容?对不起英语,它是通过谷歌翻译器翻译的
<!DOCTYPE html>
<html>
<head>
<script>
function addLink() {
//Get the selected text and append the extra info
var selection = window.getSelection(),
pagelink = '<br /><br /> Read more at: ' + document.location.href,
copytext = selection + pagelink,
newdiv = document.createElement('div');
//hide the newly created container
newdiv.style.position = 'absolute';
newdiv.style.left = '-99999px';
//insert the container, fill it with the extended text, and define the new selection
document.body.appendChild(newdiv);
newdiv.innerHTML = copytext.replace(/\n/g, "<br />");
selection.selectAllChildren(newdiv);
//remove a novadiv
window.setTimeout(function () {
document.body.removeChild(newdiv);
}, 100);
}
document.addEventListener('copy', addLink);
</script>
</head>
<body>
<div id='perg'>Text to copy</div>
</body>
</html>
答案 0 :(得分:1)
不确定这是您想要的。我实际上创建了一个div(显示),它只是静态的,而不是像演示那样动态创建的。如果我理解正确,那么在将文本和location href复制到该div时是否要保留当前选择?如果需要文本,则实际上可以使用.toString(),并且在代码中,当使用selection.selectAllChildren时,您将取消选择从中复制文本。很难完全理解您的要求。
<!DOCTYPE html>
<html>
<head>
<script>
function addLink() {
let hiddendiv = document.getElementById('copiedstuff');
let selection = window.getSelection();
let selectiontext = window.getSelection().toString();
pagelink = '<br /><br /> Read more at: ' + document.location.href;
copytext = selectiontext + pagelink;
hiddendiv.innerHTML = copytext.replace(/\n/g, "<br />");
}
document.addEventListener('copy', addLink);
</script>
</head>
<body>
<div id='perg'>Text to copy</div>
<div id='perg1'>Something Else</div>
<div style = "margin-top:20px;border:1px solid black;">
<div id='copiedstuff'></div>
</div>
</body>
</html>