我被要求在网站上修复一些错误,其中一个错误就是把我扔掉了。由于此特定网站的样式布局,当用户从指定区域选择和复制文本时,他们会复制富文本数据,如果粘贴到富文本编辑器中,则会在黑色背景blob上生成大的黑色文本。
理想情况下,我想删除所有样式数据,或以某种方式启用对特定数据集的纯文本复制。
这可能吗?或者我是否必须使用像what GitHub uses for Git URLs这样的Flash小程序?
答案 0 :(得分:1)
如果您对使用JavaScript解决问题感到满意,可以在想要重新设置的元素上捕获“oncopy”事件(归功于@FirstZero),然后使用JavaScript重新设置元素并在之后重新设置样式。超时。
如果你可以使用jQuery,你可以使用类似于以下的JavaScript:
$('p').bind(
'copy',
function(e) {
var copyElem= $(e.target);
var defaultColor = copyElem.css('color');
copyElem.css('color', 'pink'); // Change the color to pink for copy
window.setTimeout(
function() {copyElem.css('color', defaultColor);}, // Change it back
1
);
}
);
请注意,如果存在onaftercopy
事件,则会更整洁,但不幸的是,似乎没有。
我只在Chrome中测试过上述解决方案,但它应该可以在Firefox(自3.0起),最新版本的Chrome和Safari以及Internet Explorer中使用。它可能不在Opera中工作。
答案 1 :(得分:0)
许多年前,我制作了一个自定义表单,复制了视频游戏菜单的外观。当时,Firefox不允许使用CSS设置许多表单UI小部件(Firefox 2.something?)。显然在过去的几年里已经发生了变化。
我最后解决这个问题的方法是创建一个非常大的输入文本框,其内容通过value =“”属性传入。 (< input type =“text”,而不是< textarea) 尽管能够设置输入框及其内容的样式,但在复制文本本身时不会保留此信息。所以我完全支持这个问题,修复工作正在进行中!
它也相当简单,绝对不需要JS。