电子:使用上下文菜单粘贴字符串

时间:2019-04-02 09:11:10

标签: reactjs electron

我正在使用Electron和React构建一些应用程序。我想保留标准的复制粘贴功能,例如在“常规”程序/浏览器中。

我已经在我的Electron脚本中添加了以下代码:

app.on('ready', ()=>{
  BrowserWindow.addDevToolsExtension(
    path.join(os.homedir(), '/AppData/Local/Google/Chrome/User Data/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/3.6.0_0')
 )
  createWindow();
  const ctxMenu = new Menu();
  ctxMenu.append(new MenuItem({
    label:'Paste',
    click:()=>{console.log('Paste clicked!')}
  }))

  mainWindow.webContents.on('context-menu',(e,params)=>{
    ctxMenu.popup(mainWindow,params.x,params.y)
  })

})

现在,我不知道如何创建粘贴功能。我看到电子具有“剪贴板” API,但是如何设置特定HTML元素(用户希望粘贴到其中)和电子代码之间的连接?

我的应用程序纯粹是基于浏览器的应用程序,这意味着除了Electron的标准样板之外,没有NodeJS代码。

我需要拦截浏览器中的右键单击,然后如何与Electron通信吗?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果有人感兴趣,该解决方案实际上非常简单:

您需要做的就是在菜单项中添加一个“角色”:

index2word = {array([[9.56090081e-05]]):'think', 
              array([[0.00024469]]):'apple'}

就是这样。

答案 1 :(得分:0)

这是完整的片段。确保检查元素是否可编辑

 this.mainWindow.webContents.on('context-menu', (_, props) => {
  const menu = new Menu();
  if (props.isEditable) {
    menu.append(new MenuItem({ label: 'Cut', role: 'cut' }));
    menu.append(new MenuItem({ label: 'Copy', role: 'copy' }));
    menu.append(new MenuItem({ label: 'Paste', role: 'paste' }));
  }
  
  menu.popup();
});