一旦crbug.com/395376是固定的,你可以在你的清单文件中声明的clipboardWrite许可,只需使用folllowing代码来自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。有关如何使用innerHTML进行复制的示例,请参阅https://stackoverflow.com/a/25275151。
如果你了解使用的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();
}
});