Electron-开发实践:clipboard剪切板
【前言】
Electron提供获取和写入系统剪切板的操作,
详见:https://www.electronjs.org/docs/latest/api/clipboard
【进程】
clipboard支持主进程使用,支持没有开启sandbox的渲染进程使用
const { clipboard } = require("electron");
【系统】
大部分clipboard的api支持windows,mac,linux操作系统,
在linux下有一个selection剪切板,
可以使用type参数传入获取selection剪切板内容,
// 默认
clipboard.readText();
// linux下selection剪切板
clipboard.readText("selection");
【api】
clipboard中的读写相关的api,如下
// text
clipboard.readText();
clipboard.writeText(text);
// html
clipboard.readHTML();
clipboard.writeHTML(markup);
// image
clipboard.readImage();
clipboard.writeImage(image);
// rtf
clipboard.readRTF();
clipboard.writeRTF(text);
// bookmark,仅支持windows和mac
clipboard.readBookmark();
clipboard.writeBookmark(title, url);
// find text,仅支持mac
clipboard.readFindText();
clipboard.writeFindText(text);
其他api
// 清空剪切板
clipboard.clear();
// 获取支持的剪切板格式,例如:[ 'text/plain', 'text/html' ]
clipboard.availableFormats();
【sandbox】
上面有说过clipboard不支持在没有开启sandbox的渲染进程中使用,
那么如果要在没开启sandbox的渲染进程中操作剪切板应该怎么做呢?
通过ipc
一种方法是渲染进程和主进程ipc来操作clipboard
渲染进程中
// preload.js
const { ipcRenderer } = require("electron");
ipcRenderer.send("clipboard-write-text", text);
主进程中
// main.js
const { ipcMain, clipboard } = require("electron");
ipcMain.on("clipboard-write-text", (_, text) => {
clipboard.writeText(text);
});
通过浏览器clipboard相关api
浏览器支持navigator.clipboard,
详见:https://developer.mozilla.org/zh-CN/docs/Web/API/Clipboard_API
渲染进程中
navigator.clipboard.readText().then((clipText) => {
console.log(clipText);
});
对比
1. ipc的方式用户无感知,但是如果ipc传递的剪切板内容较大可能会卡顿
2. navigator.clipboard的方式会弹出安全授权,需要用户允许后才可以使用
相关推荐
Electron-开发实践:本地日志
【前言】 使用electron开发好本地应用后, 本地日志记录必不可少, 这样可以通过日志获取用户操作信息以及定位bug等, 本地日志与实时性的埋点上报稍微有不同, 本地日志量更大,信息更全,且不是所有信息都时候上报。 【与nodejs本地日志的异同】 electron写本地日志和nodejs写本地
Electron-开发实践:注册快捷键
【前言】 本文介绍一下electron应用中如何注册快捷键 【主进程】 主进程注册快捷键比较简单,需要注意的是在app ready后使用, 常见键盘映射: https://www.electronjs.org/docs/latest/api/accelerator 另外在推出app时需要将所有注册的
Electron-开发实践:几种更新方式
【前言】 Electron开发桌面APP后, 接着涉及一个问题就是如何更新后续的版本, 本文介绍几种更新的方式。 【Electron架构】 用Electron开发的桌面APP, 其实包含几个部分: 1\. Electron本身的环境 2\. 主进程,主进程中又分为Nodejs部分,和非Nodejs部
Electron-开发实践:定制Mac菜单
【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册
Electron-开发实践:包体积精简
【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册