2010-05-08 243 views
1

我想使用JavaScript来清理从我的网站复制的文本。从复制文本中删除文本

我用的片段是这样的:

body { 
    vertical-align: middle; ➊ 
} 

凡➊表示稍后评论。我希望读者复制此代码段并使用它 - 所以我需要删除该Unicode标记。我如何访问正在复制的文本并对其进行更改?

我认为当用户点击(mousedown)时,会从代码片段中删除标记,因此她可以选择文本并复制它,然后恢复标记,但这似乎是一个很长的路要走。

回答

2

只要把span标签unicode的标志,并把显示器没有他们,当用户点击

body { 
    vertical-align: middle; <span class="marker">➊</span> 
} 

然后为此在jQuery的

$('.code') 
    .mousedown(function() { 
     $(this).find('.marker').css('display','none'); 
    }) 
    .mouseleave(function() { 
     $(this).find('.marker').css('display','inline'); 
    }); 

作为奖励,你可以再.marker元素应用以下样式:

​.marker 
{ 
    position:absolute; 
    right:0; 
}​ 
+0

恕我直言,这接缝是最合理的方式! +1 – 2010-05-08 12:00:27

+0

你测试成功了吗?我无法使它工作(我精通JavaScript,所以代码执行,但我仍然复制标记。) – riddle 2010-05-08 12:21:38

+0

http://www.jsfiddle.net/92En5/绝对在铬中工作。也许不会在别人 – Eric 2010-05-08 12:24:35

0

只是在注释中设置标记?因此复制后使用时不会造成任何伤害

+0

竖起大拇指的想法,但这不是我正在寻找。 – riddle 2010-05-08 12:28:52

1

您可以将unicode标记转换为图像,因为复制纯文本时会忽略图像。

+0

这实际上我可能会尝试。谢谢! – riddle 2010-05-08 12:22:51

0

有一个oncopy处理程序,但我怀疑它是广泛支持。还有像onselectstart这样的选择事件处理程序(对于不同的浏览器也是不同的)以及使文本的一部分不可选的各种属性,例如-moz-user-select: none(又是非跨浏览器)。你可能更好地使用绝对定位的标记或通过z-index使标记不可访问。

+0

用户选择:不适用于Mozilla和WebKit,是的,它不会选择标记。但他们无论如何都被复制。 :/ – riddle 2010-05-08 12:22:28