是否可以仅为复制重置内容样式?

时间:2012-01-03 17:07:58

标签: html css

我被要求在网站上修复一些错误,其中一个错误就是把我扔掉了。由于此特定网站的样式布局,当用户从指定区域选择和复制文本时,他们会复制富文本数据,如果粘贴到富文本编辑器中,则会在黑色背景blob上生成大的黑色文本。

理想情况下,我想删除所有样式数据,或以某种方式启用对特定数据集的纯文本复制。

这可能吗?或者我是否必须使用像what GitHub uses for Git URLs这样的Flash小程序?

2 个答案:

答案 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
        );
    }
);

Try it out in jsFiddle

请注意,如果存在onaftercopy事件,则会更整洁,但不幸的是,似乎没有。

我只在Chrome中测试过上述解决方案,但它应该可以在Firefox(自3.0起),最新版本的Chrome和Safari以及Internet Explorer中使用。它可能在Opera中工作。

答案 1 :(得分:0)

许多年前,我制作了一个自定义表单,复制了视频游戏菜单的外观。当时,Firefox不允许使用CSS设置许多表单UI小部件(Firefox 2.something?)。显然在过去的几年里已经发生了变化。

我最后解决这个问题的方法是创建一个非常大的输入文本框,其内容通过value =“”属性传入。 (< input type =“text”,而不是< textarea) 尽管能够设置输入框及其内容的样式,但在复制文本本身时不会保留此信息。所以我完全支持这个问题,修复工作正在进行中!

它也相当简单,绝对不需要JS。