我有一个网页,其中文本有­
个字符(=软连字符)和其他不寻常的实体混合在一起。虽然这些实体是正确显示页面所必需的,但我想将它们过滤掉文本从页面复制到剪贴板。
1)JavaScript可以实现吗?我熟悉onCopy
事件,但我看过的例子并没有使复制的文本可供进一步处理。
2)如果是这样,最简单的方法是什么?
我不能做的事情:
a)更改服务器端网页中的字符。
b)为这一个函数安装JQuery或其他JS框架。答案 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!';
}
尝试在小提琴中复制/粘贴文本。