我试图从html文档的表单中获取一个数字输入,然后将其发送到javascript文档和console.log中。即使在尝试调试和尝试多个版本时,它仍然无法工作。
HTML文档:
<form id="searchForm" onsubmit="search(event)" class="nodrag">
<input type="text" id="searchBar" placeholder="COMING SOON">
<input type="submit" value="O-">
</form>
<script src="index.js"></script>
<script>
function search(event) {
event.preventDefault();
const query = document.getElementById('searchBar').value;
ipcRenderer.send('search-query', query);
}
</script>
索引.JS:
const {ipcMain, app, BrowserWindow, remote } = require('electron');
let num = 0;
//code to create electron window
const checkForUpdates = () => {
ipcMain.on('search-query', (query) => {
console.log(`Received search query: ${query}`);
});
}
setInterval(checkForUpdates, 300);
我很抱歉,我不能提供更多的信息,为什么它不工作,因为一切看起来很好,我可以提供更多的信息,如果需要的html和javascript文件。
1条答案
按热度按时间qvsjd97n1#
您必须使用旧版本的Electron才能使用
remote
模块。该模块在一段时间前被撤销。虽然有一个userlandremote
模块,但最好尽可能通过更好的应用程序设计来避免使用它。要实现结构良好的Electron应用程序,需要阅读和理解渲染进程与主进程之间通信时Electron的最佳实践。
有关详细信息,请参阅下面列出的链接:
关于你剩下的代码。
index.js
(主进程)文件(下面我将其称为main.js
)中,不需要实现setInterval()
函数来轮询ipcMain.on('search-query, () => {});
,而是将ipcMain.on()
函数包含在代码的正常流程中,因为当在该通道上接收到消息时,IPC将触发该函数。由于其他一切看起来都很正常,让我们创建一个最小化的可重复示例,向您展示如何使用
preload.js
脚本来完成所有工作。main.js
(主进程)preload.js
(主进程)index.html
(渲染进程)