苏南大叔偶尔间发现一个问题,那就是:在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相关经验文字:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

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

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

本站的忠实读者小伙伴,正在阅读下面这些文章: