我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔偶尔间发现一个问题,那就是:在mac系统下,electron上的文字是无法复制的,没右键,也不响应热键。而在win10或者centos系统上面,同样的工程,却不存在这个很奇怪的问题,都是可以正常复制文字的(通过系统热键)。所以,苏南大叔想了一下:关于electron上无法复制文字的事情,如果真的有这个需求的话,还是需要在mac上单独做个兼容。

苏南大叔:mac版的electron程序,无法复制文字的临时解决方案 - electron-mac-copy-issue
mac版的electron程序,无法复制文字的临时解决方案(图3-1)

本文中,苏南大叔针对mac下的electron无法复制文字的问题,做了临时的兼容。本文的方案并不是很完美,不过作为一个临时的过度方案,还是值得借鉴的。

本文测试环境:mac+electron@4.0.1

临时解决方案

这个方案就是:利用menu菜单,注册个CmdOrCtrl+CCmdOrCtrl+V的快捷键。本文方案并不完美,仅供参考。代码如下:

main.js:

const {Menu} = require('electron')
//...
if (process.platform === 'darwin') {
  const template = [
    {
      label: "Application",
      submenu: [
        { label: "Quit", accelerator: "Command+Q", click: function() { app.quit(); }}
      ]
    },
    {
      label: "Edit",
      submenu: [
        { label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" },
        { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" },
      ]
    }
  ];
  Menu.setApplicationMenu(Menu.buildFromTemplate(template))
} else {
  Menu.setApplicationMenu(null)
}

苏南大叔:mac版的electron程序,无法复制文字的临时解决方案 - mac-copy-code
mac版的electron程序,无法复制文字的临时解决方案(图3-2)

注意事项就是:一定要在electron中引入Menu,才能正常使用菜单功能。设置好菜单之后,就可以像win10一样,自由复制主程序体内的文字了。好happy的说~ 鼓掌!

效果图

本文的测试效果图,如下:

苏南大叔:mac版的electron程序,无法复制文字的临时解决方案 - mac-copy
mac版的electron程序,无法复制文字的临时解决方案(图3-3)

虽然是注册了菜单,但是文字还是可以通过热键进行复制的。并不是:必须点击菜单才能执行。所以,并不需要做太多的担心。比如花+c花+v等等热键是生效的哦~

总结

本文方案,并不完美。主要是因为苏南大叔想水一篇文章而已。哈哈哈~ 想知道更加完美的解决方案么?可以继续关注苏南大叔的后续electron相关经验文字:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   electron