chrome 扩展程序访问剪贴板操作总结
微wx笑
2025-05-11【前端开发】
0
0关键字:
chrome 扩展程序 剪贴板
chrome 扩展程序访问剪贴板操作总结读取剪贴板中的内容:// 创建临时 textarea 用于粘贴const textarea = document.createElement('textarea');textarea.style.posit
chrome 扩展程序访问剪贴板操作总结
读取剪贴板中的内容:
// 创建临时 textarea 用于粘贴 const textarea = document.createElement('textarea'); textarea.style.position = 'fixed'; textarea.style.opacity = '0'; document.body.appendChild(textarea); textarea.focus(); // 执行粘贴命令 document.execCommand('paste'); var text = textarea.value; document.body.removeChild(textarea); console.log('aaa剪贴板内容:', text);
这种老的方式虽然使用的代码比较多,但是不会弹出提示;
下面这种新的方式就会弹出提示,询问用户是否允许,如果用户不允许,那么就访问失败了;
// 尝试读取剪贴板 //const text = await navigator.clipboard.readText(); //console.log(`await剪贴板内容: ${text}`);
写入剪贴板是使用这样的方式:
var conEle = document.createElement("input"); if (str.includes('\n') || str.includes('\r')){ conEle = document.createElement("textarea"); } var selectionObj = window.getSelection(); var rangeObj = null; if (selectionObj.rangeCount > 0){ rangeObj = selectionObj.getRangeAt(0); } conEle.value = str; //str.replace(/[\r\n]/g, ''); conEle.style.position = 'fixed'; conEle.style.left = '-9999px'; document.body.appendChild(conEle); conEle.select(); document.execCommand("copy"); conEle.remove();
但是这种老的方式会再次触发 copy 事件
而下面这种新的方式却不会,也不会弹出询问用户是否允许的对话框
浏览器的安全策略更多限制的是读取,
var mkdown = selection.html.replace(/<\/?strong>/g, '**'); const clipboardItem = new ClipboardItem({ 'text/html': new Blob([mkdown], { type: 'text/html' }), 'text/plain': new Blob([mkdown], { type: 'text/plain' }) }); // 写入剪贴板 await navigator.clipboard.write([clipboardItem]); console.log('成功写入剪贴板', selection.html);
有一种通过 clipboardData 的方式,但是需要是用户主动交互的,比如单击按钮
像用户按下Ctrl+C这样的快捷键是不行的;
var cData = e.clipboardData || window.clipboardData;
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/front/2025-05-11/2070.html
下一篇:返回列表