是否可以使用JavaScript实现剪贴板管理器?

时间:2013-05-16 19:28:15

标签: javascript html

我想为特定网站创建一个基于JavaScript的剪贴板管理器,但我不确定从哪里开始。由于大多数Web浏览器不允许直接访问剪贴板内容,是否有其他方法来存储用户从特定网页复制的剪贴板项列表,而不存储任何重复项?

2 个答案:

答案 0 :(得分:2)

您可以通过检测CTRL+C组合键,将所选文本添加到数组,然后从数组中删除任何重复元素来获取复制的文本,以便不存储重复的剪贴板项目。

如果您想存储用户已复制的HTML(而不是仅存储文本),则可以使用Rangy等JavaScript库。

这是一个演示,显示用户从页面复制的所有文本,而不显示任何重复的剪贴板项目:

http://jsfiddle.net/2RdRD/1/

var arrayOfCopiedText = new Array();
$(window).keyup(function (e) {
    if (e.ctrlKey && e.keyCode === 67) {
        arrayOfCopiedText[arrayOfCopiedText.length] = window.getSelection().toString();

        //remove duplicates from the array
        arrayOfCopiedText = removeDuplicates(arrayOfCopiedText);

        alert("List of current clipboard items: " + JSON.stringify(arrayOfCopiedText));
    }
});

function removeDuplicates(names) {
    var uniqueNames = [];
    $.each(names, function (i, el) {
        if ($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
    });
    return uniqueNames;
}

答案 1 :(得分:0)

如果你有一个ui让用户复制到剪贴板并将该值存储在dom中,你可以使用execCommand。

https://developer.mozilla.org/en-US/docs/Rich-Text_Editing_in_Mozilla