如何自动将文本附加到使用JavaScript复制的文本

时间:2009-07-31 21:13:03

标签: javascript html xhtml copy copy-paste

在JavaScript中,如何在网站上选择文本,复制它(通过Control + C,Command + C或编辑复制)并让JavaScript在剪贴板上附加一行或两行,以便在用户粘贴时,内容他们复制了以及额外的行吗?

此外,这是否可以仅在网站的某些<div>内进行?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:9)

我开发了一个执行此操作的脚本(和here's关于此的博客文章):

<script>
$("body").bind('copy', function (e) {
    if (typeof window.getSelection == "undefined") return; //IE8 or earlier...

    var body_element = document.getElementsByTagName('body')[0];
    var selection = window.getSelection();

    //if the selection is short let's not annoy our users
    if (("" + selection).length < 30) return;

    //create a div outside of the visible area
    var newdiv = document.createElement('div');
    newdiv.style.position = 'absolute';
    newdiv.style.left = '-99999px';
    body_element.appendChild(newdiv);
    newdiv.appendChild(selection.getRangeAt(0).cloneContents());

    //we need a <pre> tag workaround
    //otherwise the text inside "pre" loses all the line breaks!
    if (selection.getRangeAt(0).commonAncestorContainer.nodeName == "PRE") {
        newdiv.innerHTML = "<pre>" + newdiv.innerHTML + "</pre>";
    }

    newdiv.innerHTML += "<br /><br />Read more at: <a href='"
        + document.location.href + "'>"
        + document.location.href + "</a> &copy; MySite.com";

    selection.selectAllChildren(newdiv);
    window.setTimeout(function () { body_element.removeChild(newdiv); }, 200);
});
</script>

答案 1 :(得分:1)

您可以使用execCommand("Copy")execCommand("Paste")的组合来完成您想要的工作。

这可以帮助你:

http://www.geekpedia.com/tutorial126_Clipboard-cut-copy-and-paste-with-JavaScript.html

答案 2 :(得分:1)

我在faqs.org网站[1]上遇到过这个,并且很好奇。他们使用来自tynt.com的一些javascript。我还发现了一个ask-metafilter答案[2]指向不同的javascript。他们应该是一个很好的起点。我还没有自己解决这个问题,但我希望你能将事件监听器附加到有问题的div中。

  1. http://www.faqs.org/faqs/tv/sat-night-live/deep-thoughts/