如何从Google Chrome扩展将HTML格式的文本复制到剪贴板
How to copy HTML formatted text on to Clipboard from Google Chrome extension?
比方说,在我的Chrome扩展中,我需要将用户格式化的HTML文本复制到剪贴板上。文本(以HTML形式)可能是这样的:
This is a <b>test</b><div><br></div>
<div>And this is too</div><div><br></div><div>Thank you</div>
如果我使用这个JavaScript示例,我得到的只是上面的HTML标记。但我想知道,我可以把它复制成格式化的文本,还是这个?
这是一个测试
这是也
谢谢
crbug.com/395376修复后,您可以在清单文件中声明clipboardWrite
权限,只需使用yuor内容脚本中的以下代码:
var element = document.body; // Example, select the "whole" document
// Change selected area
var r = document.createRange();
r.selectNode(element);
var s = window.getSelection();
s.removeAllRanges();
s.addRange(r);
// Copy - requires clipboardWrite permission + crbug.com/395376 must be fixed
document.execCommand('copy');
在修复之前的错误之前,您必须将数据传递到后台页面并从那里复制消息。此解决方案不是最佳方案,因为您将在后台页面中插入不受信任的HTML。看见https://stackoverflow.com/a/25275151例如关于如何滥用CCD_ 2进行复制。
如果您了解使用innerHTML的相关风险,并接受其后果,那么您可以使用以下代码来复制富文本:
// content script
var element = document.body; // Example
chrome.runtime.sendMessage({
html: 'copyhtml',
text: element.outerHTML
});
背景页:
chrome.runtime.onMessage.addListener(function(message) {
if (message && message.type == 'copyhtml') {
var wrapper = document.createElement('div');
// WARNING: Potentially insecure!
wrapper.innerHTML = message.html;
document.body.appendChild(wrapper);
var range = document.createRange();
r.selectNode(wrapper);
var s = window.getSelection();
s.removeAllRanges();
s.addRange(r);
// Copy - requires clipboardWrite permission
document.execCommand('copy');
wrapper.remove();
}
});
(如果读者想复制文本而不是富文本,请参阅剪贴板复制/粘贴到内容脚本(Chrome扩展))
相关文章:
- 测试文本区域中的特定文本格式
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 在不使用javascript的情况下,可以在表单字段中设置文本占位符(以提示最终用户插入特定格式)
- Angular指令中的最佳实践是将文本输入设置为英尺和英寸的格式
- HTML文本框,它接受电话号码,并以美国电话号码格式显示
- 输出文本不't以正确格式显示
- 正则表达式,用于从html格式的字符串中提取文本
- 更改html标记或其子标记(而不是其属性)文本中的日期格式
- 如何在不丢失格式的情况下连续淡入() 元素文本的每个字符,包括嵌套元素
- HTML5中具有过程格式的单行文本编辑器
- 防止Javascript注入(但保留文本格式和图像)
- 我有来自OpenWeatherMap API的风向数据,数据以0到360度表示.我想将其转换为文本格式
- InternetExplorer:外部文本文件只能使用二进制格式
- 从html中获取包含格式的文本
- 网页不显示微小的MCE格式文本
- 使用附加的javascript强制日期格式文本框在FireFox中不起作用
- 表格编号格式&文本添加HTML
- 格式文本内的下拉框
- 在客户端上显示SQL格式文本的最佳方式
- 从 DOM 保留换行符中提取无格式文本的最佳方法