使用CSS或Javascript复制/剪切时从文本中删除样式
Remove Styles from Text when Copying / Cutting using CSS or Javascript
>Yo,
好吧,这个问题已经喋喋不休了一段时间:如何在不带任何样式包袱(背景颜色、颜色等(的情况下复制/剪切样式文本?
被挫败的几种攻击途径:
- 使用 ::
- select 以不同的方式设置文本样式?不起作用,::样式不被复制
- 使用 jQuery 的选择绑定设置所选文本的样式这仅适用于输入,不适用于 p、div
- 通过使用 jQuery 将事件绑定到复制/粘贴来拦截和删除样式?无法访问复制的对象以删除内容,请尝试使用 e.preventDefault((; 然后返回事件对象,但这也不起作用 保存剪贴板数据
- 后修改剪贴板数据?也没有骰子,大多数浏览器不会让你在没有 flash 和某种排序确认的情况下进入这个
无论如何,想法?似乎对于具有白色背景颜色的网站非常有用。
鉴于当前的浏览器功能,您可以截获复制事件,获取没有样式的选择,并将其放入剪贴板。
我已经用Chrome/Safari/Firefox测试了这段代码。 相信也应该在MS浏览器上运行。
document.addEventListener('copy', function(e) {
const text_only = document.getSelection().toString();
const clipdata = e.clipboardData || window.clipboardData;
clipdata.setData('text/plain', text_only);
clipdata.setData('text/html', text_only);
e.preventDefault();
});
我现在
还没有时间编写示例,但是您可以为键盘快捷键触发的剪切/复制执行此操作。它不适用于通过上下文菜单或编辑菜单选项进行剪切/复制,因为它依赖于在剪切或复制事件触发之前更改用户选择。
步骤:
- 处理 Ctrl-C 和 Ctrl-X 键盘快捷键以及 Mac 等效项。
- 在此处理程序中,创建一个屏幕外元素(例如绝对位置和左 -10000px(并将所选内容复制到其中。您可以使用
window.getSelection().getRangeAt(0).cloneContents()
执行此操作,尽管您需要为 IE <9 提供单独的代码,并且您应该检查选择是否折叠。 - 执行任何您喜欢的操作来更改屏幕外元素内容的样式。
- 移动所选内容以包含屏幕外元素的内容,以便剪切或复制此内容。
- 添加用于
window.setTimeout()
的短暂延迟(几毫秒(,该延迟调用删除屏幕外元素并恢复原始选择的函数。
你需要在浏览器中发生这种情况吗?对于每个用户?
如果没有 - 它只适合您 - 那么您可以使用 Clipmate 软件执行此操作。
http://www.clipmate.com/index.htm
它具有删除所有样式的功能。
一旦你触发了复制或剪切,你可以去除html标签,只去除带有一些正则表达式的文本
var String = Sample.replace(/(<([^>]+)>)/ig,"");
此外,如果您将存储的文本放在 id 为"sample_div"的div 中使用var String=$('sample_div').text('');
仅获取内部文本
相关文章:
- 具有所有样式的文本正在复制到可编辑文本区域
- 将Div内容复制到文本区域或具有相同字体族样式的文本
- 为未标记的文本添加CSS样式
- 尝试在随机文本和图像脚本中添加样式/更改字体
- HTML + JS:设置文本区域内容样式的最佳方式
- 如何更改列表中一个元素中的文本样式
- 如何检查与显示:无样式相关的文本内容
- 如何使用 JavaScript 将样式应用于 CKEditor 中的选定文本
- 如何优化动态生成多列文本样式
- 用于丢失文本样式的脚注的Indesign脚本
- 多语言丢失文本样式
- 在非对象中为 null(评估项文本.样式)
- 防止内容可编辑在光标处设置文本样式
- 谷歌图表Sankey -节点文本样式
- Ruby on Rails:如何允许用户在表单上设置文本样式
- 你喜欢文本样式
- 使用Javascript清除元素的文本样式
- 在脚本中设置文本样式
- 使用 Javascript 确定文本样式
- 如何从window.selection()中获得文本样式?