如何在不丢失选择javascript的情况下进行复制?

时间:2019-07-14 21:42:25

标签: javascript

我使用的代码是在用户复制选择内容(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>

1 个答案:

答案 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>