html后缀的网页怎么复制,如何将HTML格式的文本从Chrome浏览器扩展复制到剪贴板上?...

本文介绍如何在crbug.com/395376问题解决后,使用content script和background page配合实现网页内容复制,包括使用`document.execCommand('copy')`的方法,以及通过发送和接收HTML数据来绕过安全限制。同时讨论了使用innerHTML的风险和替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一旦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();

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值