繁体   English   中英

无法使用 node/electron javascript 应用程序中的发送功能让 globalShortcut 将命令注册到 index.js

[英]Trouble getting globalShortcut to register commands to index.js using send function in node/electron javascript app

出于某种原因,我的代码编译没有错误,但是,我的消息“Helloworld”没有在控制台中正确显示。 但是,当我按下绑定的组合键时,会显示我的测试消息。 下面是我的一组代码,index.js 和 main.js

这是为节点/电子编写的。 我的 main.js 文件:

 //main.js //requirements const electron = require('electron'); const app = require('electron').app; const BrowserWindow = require('electron').BrowserWindow; const remote = require('electron').remote; const ipc = require('electron').ipcMain; const globalShortcut = require('electron').globalShortcut; var mainWindow = null; //create app, instantiate window app.on('ready', function() { mainWindow = new BrowserWindow({ frame: false, height: 700, resizable: false, width: 368 }); mainWindow.loadURL(`file://${__dirname}/app/index.html`); //this is the icp bind globalShortcut.register('ctrl+shift+1', function(){ console.log("test") mainWindow.webContents.send("testBindicp" ,"HelloWorld"); }); //this is the remote bind globalShortcut.register('ctrl+shift+2', function(){ console.log("test") mainWindow.webContents.send("testBindicp" ,"HelloWorld"); }); }); //close the app ipc.on('close-main-window', function () { app.quit(); });

下面是我的整个 index.js:

 //index.js const globalShortcut = require('electron').globalShortcut; const remote = require('electron').remote; const ipc = require('electron').ipcRenderer; //testing remote render from remote bind remote.require('./main.js'); remote.on('testBindRemote', function(event){ console.log(event + " - test - from remote index.js"); }); //testing icpRenderer from icp bind ipc.on('testBindicp', function (event) { console.log(event + " - test - from icpRenderer on index.js") }); //close the app var closeEl = document.querySelector('.close'); closeEl.addEventListener('click', function() { ipc.send('close-main-window'); });

我遇到的问题是当我按下键盘绑定时,只有 main.js 文件中的控制台日志被发送到控制台。 close 命令仍在呈现的窗口中工作,但 index.js 窗口中的任何其他命令都没有绑定到正确的 main.js 元素。

如果我做错了什么,请告诉我实施这些方法的正确方法,因为远程和 ICP 结构对我来说似乎很困惑。

谢谢你。

您需要将另一个参数传递到 index.js 文件的侦听进程ipc.on中,使其像这样:

ipc.on(<channel name>, function (event, arg) {
       console.log(arg + " - test - from icpRenderer on index.js");
   });

有关更多信息,请访问webContents API 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM