javascript - 主进程和渲染进程之间的通信

标签 javascript node.js electron

我正在渲染器端跟踪鼠标坐标。我想要实现的是,我将这些变化的鼠标坐标发送到 main.js (node.js) 中的一个函数,然后这个函数将计算一些东西并返回值,而渲染器中的其他函数将像乒乓球一样使用这个变量。

每次用户移动鼠标时都会重复此过程。这可以用 electron.js 实现吗?

最佳答案

这是可能的,但最好在渲染器端使用鼠标坐标来执行功能。因为像流一样发送 ipc 消息可能会减慢应用程序的速度。

以下是如何使用 ipc 消息来实现此目的的示例。

(function() {


    const ipcRenderer = require('electron').ipcRenderer;
    document.onmousemove = handleMouseMove;
    function handleMouseMove(event) {
        var eventDoc, doc, body;

        event = event || window.event; // IE-ism

        // If pageX/Y aren't available and clientX/Y are,
        // calculate pageX/Y - logic taken from jQuery.
        // (This is to support old IE)
        if (event.pageX == null && event.clientX != null) {
            eventDoc = (event.target && event.target.ownerDocument) || document;
            doc = eventDoc.documentElement;
            body = eventDoc.body;

            event.pageX = event.clientX +
              (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
              (doc && doc.clientLeft || body && body.clientLeft || 0);
            event.pageY = event.clientY +
              (doc && doc.scrollTop  || body && body.scrollTop  || 0) -
              (doc && doc.clientTop  || body && body.clientTop  || 0 );
        }

        // Use event.pageX / event.pageY here
        ipcRenderer.send('mouse-move',{ x : event.pageX , y : event.pageY });
    }
})();

在 main.js 中

const ipcMain= require('electron').ipcMain;
ipcMain.on('mouse-move', (event, arg) => {
  console.log(arg) // prints eg :"{ x: 0 , y : 0 }"
  event.sender.send('return-value', arg.x + arg.y);//for eg : adds x and y
})

并捕获渲染器脚本中的返回值

ipcRenderer.on('return-value', (event, arg) => {
  console.log(arg) // prints 0 ; x + y 
  // Do what you want to do with the value
})

关于javascript - 主进程和渲染进程之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56221771/

相关文章:

javascript - 当我尝试将 js 文件(带有 Node 模块)导入到我的主 Electron js 文件时出现 "require is not defined"错误

javascript - 如何在中间件函数中迭代 Mongoose 模型属性?

javascript - 如何将输入给出的文本存储到 JSON 文件

node.js - Angular 2无法连接到服务器

node.js - 错误 : Cannot find module 'polka' on Heroku

node.js - 数据存储区使用 Node 获取最后插入的 id

c# - 编译后找到ID

javascript - 访问 li ul 中的 href 元素

javascript - 如何以编程方式打开我从 Electron DesktopCapurer.getSources 获得的窗口

python - 使用 Electron 应用程序时如何从 Angular 组件与 Python 后端通信?