使用JavaScript过滤从网页复制的文本的最简单方法

时间:2015-03-03 17:18:04

标签: javascript clipboard

我有一个网页,其中文本有­个字符(=软连字符)和其他不寻常的实体混合在一起。虽然这些实体是正确显示页面所必需的,但我想将它们过滤掉文本从页面复制到剪贴板。

1)JavaScript可以实现吗?我熟悉onCopy事件,但我看过的例子并没有使复制的文本可供进一步处理。

2)如果是这样,最简单的方法是什么?

我不能做的事情:

a)更改服务器端网页中的字符。

b)为这一个函数安装JQuery或其他JS框架。

1 个答案:

答案 0 :(得分:0)

有一段时间,我认为只用JS做这件事是不可能的,但你可以!您需要使用oncopy事件处理程序,并将选择更改为包含已过滤文本的临时div。

以下是一个例子:

function copyHandler() {
    //Get the selected text
    var selection = window.getSelection(),
        // Filter it
        newText = filterText( selection ),
        // Create a div
        newdiv = document.createElement('div');
    // Hide it
    newdiv.style.position = 'absolute';
    newdiv.style.left = '-99999px';

    // Insert the div in the body
    document.body.appendChild(newdiv);
    // Put the text in it
    newdiv.innerHTML = newText;
    // Select what's in the div
    selection.selectAllChildren(newdiv);

    // When the copy is over, remove the temporary div
    window.setTimeout(function () {
        document.body.removeChild(newdiv);
    }, 100);
}

document.addEventListener('copy', copyHandler);


function filterText(txt){
    /* Do whatever you want here */
    /* To show that it's working, I'll just return that string every time */
    return 'I\'m a filtered String!';
}

JS Fiddle Demo

尝试在小提琴中复制/粘贴文本。