文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Electron剪贴板如何实现

2023-07-05 11:25

关注

这篇文章主要介绍“Electron剪贴板如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Electron剪贴板如何实现”文章能帮助大家解决问题。

在浏览器中可以通过 JavaScript 脚本来读写剪贴板数据,常用的是 document.execCommand 方法:

// 复制数据const inputElement = document.querySelector('#input')inputElement.select()document.execCommand('copy')// 粘贴数据const pasteText = document.querySelector('#output')pasteText.focus()document.execCommand('paste')

不过该方法有两个缺点:

后来浏览器厂商提出了异步 Clipboard API,但限制很多,例如:

而在 Electron 中读写剪贴板非常容易,因为 clipboard 模块提供了很多调用系统剪贴板相关的 API:

Electron剪贴板如何实现

这些 API 既可以在主进程中调用,也可以在渲染进程中调用。

但是需要注意,在渲染进程中(即 preload.js 脚本中),必须是非沙箱环境下才能使用 clipboard 模块,而 Electron 创建窗口时是默认开启沙箱模式的,因此要手动设置 sandbox 为 false,否则会报下面的错:

Electron剪贴板如何实现

接下来就为大家讲解 Electron 剪贴板模块中的常用方法:

availableFormats

availableFormats 用于查看当前剪贴板内支持的数据格式。剪贴板内的数据一般都要经历两个环节:

假设用户复制带样式的文本,那么剪贴板会存放 RTF 和纯文本两种格式的数据,粘贴时,目标窗口会自动优先选择最描述性格式的数据,如果窗口识别 RTF,则使用带格式的数据,否则就使用文本数据,此时格式设置信息丢失。

举个例子,例如我在网页上复制百度的 logo,会得到两种格式的数据:

Electron剪贴板如何实现

Electron剪贴板如何实现

此时如果调用 availableFormats方法,会得到两种结果:

const formats = clipboard.availableFormats()console.log(formats) // [ 'text/html', 'image/png' ]

应用程序还可以自己注册粘贴板格式(registered clipboard formats),例如在 vscode 里面复制了一段代码,会得到三种格式的数据:

Electron剪贴板如何实现

Electron剪贴板如何实现

Electron剪贴板如何实现

其中最后一种就是 vscode 自定义的数据格式,可以调用 availableFormats验证一下:

const formats = clipboard.availableFormats()console.log(formats) // [ 'text/plain', 'text/html', 'vscode-editor-data' ]

可以看到,最后一种是 vscode-editor-data 是自定义的。

readText 和 writeText

从剪贴板读取或向剪贴板写入纯文本数据:

clipboard.writeText('写入文本')const result = clipboard.readText()console.log(result) // 写入文本

readHTML 和 writeHTML

从剪贴板读取或向剪贴板写入 HTML 格式数据:

clipboard.writeHTML('<p >红色</p>')const result = clipboard.readHTML()console.log(result) // <meta charset='utf-8'><p >红色</p>

readImage 和 writeImage

从剪贴板读取或向剪贴板写入图片格式数据:

clipboard.writeImage(nativeImage.createFromPath(path.join(__dirname, 'apple.png')))const result = clipboard.readImage()console.log(result)

readRTF 和 writeRTF

从剪贴板读取或向剪贴板写入 RTF 格式数据:

clipboard.writeRTF('{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard\nThis is some {\b bold} text.\par\n}')const result = clipboard.readRTF()console.log(result)

clear

这个 API 最简单,直接清空剪贴板内容:

clipboard.clear()

关于“Electron剪贴板如何实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯