使用CSS或Javascript复制/剪切时从文本中删除样式

哟,

好吧一直在这一个上涂鸦: 如何复制/剪切样式文本而不带任何款式行李(背景颜色,颜色等)?

几条被挫败的攻击路线:

  1. 使用:: select来区分文本样式? 不起作用,:: style不会被复制
  2. 使用jQuery的select绑定设置所选文本的样式 这仅适用于输入,而不适用于p,div
  3. 通过使用jQuery绑定事件来复制/粘贴来拦截和删除样式? 无法访问复制的对象以删除内容,尝试使用e.preventDefault(); 然后返回事件对象,但这也不起作用
  4. 保存后修改剪贴板数据? 也没有骰子,大多数浏览器不会让你进入这个没有闪光和一些确认

无论如何,想法? 对于具有白色背景颜色的网站来说,这似乎非常有用。

我现在没有时间编写示例代码,但您可以通过键盘快捷键触发剪切/复制。 它不适用于通过上下文菜单或“编辑”菜单选项进行剪切/复制,因为它依赖于在剪切或复制事件触发之前更改用户选择。

步骤:

  1. 处理CtrlCCtrlX键盘快捷键以及Mac等效键。
  2. 在此处理程序中,创建一个离屏元素(绝对位置,左边-10000px,比方说)并将选定的内容复制到其中。 您可以使用window.getSelection().getRangeAt(0).cloneContents()来完成此操作,尽管您需要单独的IE <9代码,您应该检查选择是否已折叠。
  3. 做任何你喜欢的事情来改变离屏元素内容的样式。
  4. 移动选择以包含屏幕外元素的内容,以便剪切或复制此内容。
  5. 使用window.setTimeout()添加一个短暂的延迟(几毫秒),该window.setTimeout()调用一个删除屏幕外元素并恢复原始选择的函数。

您是否需要在浏览器中为每个用户执行此操作?

如果没有 – 它只适合你 – 那么你可以用Clipmate软件做到这一点。

http://www.clipmate.com/index.htm

它具有删除所有样式的function。

一旦触发了复制或剪切,就可以删除html标签,只删除带有一些正则表达式的文本

 var String = Sample.replace(/(<([^>]+)>)/ig,""); 

此外,如果您将存储的文本放在ID为“sample_div”的div中,请使用var String=$('sample_div').text(''); 只获得里面的文字