问题标签 [ipcrenderer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
653 浏览

electron - 在预加载脚本中调用 ipc 通信是一种好方法吗?

我刚开始学习electron。我想知道在预加载脚本中使用调用是否是个好主意ipcRenderer,即:

我阅读的每个教程都使用外部js文件来管理ipcRenderer调用,甚至不使用preload脚本。但它有效。

ipc我也可以在不调用的情况下实现我想要的:

哪一个更好?我不知道有什么负面影响,我只想从一开始就学习最佳实践。

0 投票
0 回答
390 浏览

node.js - 电子 IPC 渲染器出现问题,重新加载浏览器页面

我正在使用以下技术使用电子桌面应用程序:前端:Angular 8 主进程与子进程之间的通信是 IPC 渲染器机制。

我的问题是 - 当我从子进程向主进程发送消息时,在得到主进程的响应后,窗口重新加载。如何停止重新加载,我正在使用 event.preventDefault() 但它不起作用。我不想重新加载页面。

示例代码。

在子进程中,我称其为:

在主进程中:

在方法获取页面的子进程中重新加载。方法是:

请帮助我。

0 投票
0 回答
92 浏览

electron - 电子 ipcRenderer 一次传递一个字母的字符串

我正在尝试使用 ipc 进程将字符串从渲染传递到 main。出于某种原因,它a)重复触发,b)一次只发送一个字母,即使我可以明确地看到整个字符串在发送之前设置。到底发生了什么,我如何将其压缩回一个包含正确字符串的调用?

渲染器:

主要的:

在渲染器中,我得到了简单的输出

但主要是,我得到这个输出:

编辑:这个谜题的一个线索,用户名是一个状态挂钩变量,我用一个文字字符串换掉它,它现在发送整个字符串,但仍然发送了几次。所以这个问题的一半可能是电子不能很好地与反应钩子逻辑配合使用。

0 投票
0 回答
106 浏览

javascript - 未捕获的 ReferenceError:要求未在 filenae.html 中定义:(电子)

我正在使用电子 6.12.1 编写一个基本的 Web 应用程序我在 html 文件的脚本中遇到的问题

未捕获的 ReferenceError:在 addWindow.html:21 中未定义要求

(有两个窗口 1 是 mainWindow.html,其中打开第二个窗口的选项是 addWindow.html)

这是 main.js 的代码

虽然这是 mainWindow.html

现在最后这是 addWindow.html (第 21 行错误)

帮助 !!!

0 投票
1 回答
738 浏览

reactjs - 远处的诡异动作:Electron & React useEffect - 无法取消订阅 ipcRenderer 事件

ipcRenderer在将 Electron与 React 一起使用时,我遇到了奇怪的行为useEffect。在我的电子应用程序中,我有以下代码:

上面的代码应该侦听some-event-name由 Electron 的主进程触发的事件,mainWindow.webContents.send('some-event-name');console.log(...)发出一条表明该事件已处理的消息。

这在效果最初运行时按预期工作。添加了一个侦听器,稍后引发事件,并将字符串'Handled event'打印到控制台。但是当someValueThatChanges变量被分配一个不同的值并且第二次引发事件时,'Handled event' 字符串被打印到控制台两次(旧的侦听器似乎没有被删除)。

当调用包含在 useEffect return/cleanup 函数中时,调用的行listenerCount(eventName)按预期返回 0 。removeListener(...)removeListener(...)调用被移除时,listenerCount(eventName)调用返回一个按预期递增的值(例如 0、1、2),因为监听器没有被移除。

这是真正奇怪的部分。在任何一种情况下,无论我是否包含对 的调用removeListener(...),该myEventHandler函数的调用次数总是与运行 useEffect 的次数一样多。换句话说,Electron 报告没有事件侦听器,但myEventHandler似乎仍然被以前的侦听器调用。这是电子中的错误,还是我错过了什么?

0 投票
1 回答
833 浏览

node.js - 我似乎无法在电子中使用 ipcRenderer

使用电子 8.0.3(但问题在 8.1.0 中也很明显)。在我使用 ipcRenderer 之前,HTML 页面加载正常。这是我在页面中包含的 Javascript 代码:

包含此内容时,我在电子的开发人员控制台中收到以下错误:

有任何想法吗?这是一个新创建的项目。我什至不确定“无效或不受支持的版本”所指的错误是什么。我在电子窗口中也只看到一个白屏,因为错误没有被捕获,但即使我试图抓住它,这个过程仍然会死掉。

0 投票
0 回答
148 浏览

electron - Electron ipc 消息是有序的吗?

Electron 中是否有任何 ipc 消息的排序保证?如果是这样,它们是什么?

例如,在主要:

在渲染器中:

消息是否总是按顺序传递给渲染器(例如在上面的示例中 1 在 2 之前)?

如果是这样,如果消息在不同的通道上(例如,通过更改channel-achannel-b上述行之一),它们是否也总是排序?

0 投票
1 回答
661 浏览

javascript - 如何在 ElectronJS 中将可选回调函数传递给 ipcRenderer.on()

我正在尝试实现以下内容。在渲染器进程中,我有一个异步函数foo(),它接受一个可选参数bar作为回调函数引用。

success从主进程(此处未显示)接收并从主进程获取返回对象后,它对该对象执行一些操作,然后调用我作为参数传递的回调函数。

现在,为什么需要它是我有两个函数func1func2第一个函数foobar提供的一起调用。第二个没有。

我该如何实施?

0 投票
2 回答
4837 浏览

javascript - 如何在渲染器进程中使用 window.open 在电子中打开新窗口?

我有一个包装为电子应用程序的角度应用程序。现在,当我在渲染器进程中调用 Window.open 以获取内部路由时,我收到一条消息说Not allowed to load a local resource并打开一个空白窗口。我该如何解决这个问题?

preload.js

main.js

我尝试过的事情

  1. 添加了一个监听器new-window没有工作
  1. nativeWindowOpen向创建主 BrowserWindow 的主进程添加了标志。:没有工作

我不想使用这些require('electron')模块,或者nodeIntegration:true因为根据可用的在线/文档材料,它增加了安全问题。请建议!

0 投票
1 回答
577 浏览

electron - Electronjs ipcMain 不会使用 ipcRenderer 将消息发送到另一个窗口

我正在尝试将文本从一个窗口发送到另一个窗口,但我做不到

这是我主要听的地方

我可以在 console.log 中看到终端中的文本,但是当我尝试将文本“hi from main”发送到 window2 时,没有被调用。

这是window2代码

这很奇怪,因为如果我在 window1 工作中做同样的事情。这是我调用 IpcMain 的 window1 的代码