我正在使用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通信吗?
任何帮助将不胜感激。
答案 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();
});