Javascript 如何使HTML按钮执行Electron JS函数
我正在制作一个电子应用程序,它只是一个HTML网站,我想尝试将其集成到一个应用程序中。要使id为“createbutton”的标记在electron中执行JS函数,如createprojectwindow(),需要什么 main.js:Javascript 如何使HTML按钮执行Electron JS函数,javascript,html,electron,Javascript,Html,Electron,我正在制作一个电子应用程序,它只是一个HTML网站,我想尝试将其集成到一个应用程序中。要使id为“createbutton”的标记在electron中执行JS函数,如createprojectwindow(),需要什么 main.js: //Launch Main Part of the Program let mainWindow; let createWindow; app.on("ready", function() { console.log("C
//Launch Main Part of the Program
let mainWindow;
let createWindow;
app.on("ready", function() {
console.log("Creating new Session");
mainWindow = new BrowserWindow({
"minWidth" : 800,
"minHeight": 600
});
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, './src/index.html'),
protocol: "file:",
slashes: true,
}));
console.log("Creating Menus");
const mainMenu = Menu.buildFromTemplate(mienu);
Menu.setApplicationMenu(mainMenu);
});
function createProjectWindow () {
console.log("Creating New Project")
createWindow = new BrowserWindow({
width: 400,
height: 400,
});
createWindow.setMenu(null);
createWindow.loadURL(url.format({
pathname: path.join(__dirname, "./src/createproject.html"),
protocol: "file:",
slashes: true,
}));
}
index.html:
<nav>
<ul>
<li class="navlink" id="logo"><a><img id="logoimg" src="Assets/Images/smallInsert.png"></a></li>
<li class="navlink greyhover" id="myproj"><a>My Projects</a></li>
<li class="navlink greyhover" id="import"><a>Import</a></li>
<li class="navlink greyhover" id="test"><a>Test Site</a></li>
<li class="navlink greyhover" id="create"><a id="createbutton">Create New Project</a></li>
</ul>
</nav>
我的项目
导入
测试站点
创建新项目
要从index.html与main.js交互,您需要ipcmain和ipcdrenderer
在main.js中
const {ipcMain} = require('electron');
ipcMain.on('ABCD', (event, arg) => {/* do something */});
在index.html脚本中
const { ipcRenderer } = require('electron');
let data = /*some data*/;
whenSomethingHappens => {ipcRenderer.send('ABCD', data);}
这些来源可能有助于进一步:
以便在主进程和渲染器进程之间进行通信。您需要使用IPCAPI 你可以这样接近你的目标
main.js
const {ipcMain} = require('electron');
...
mainWindow = new BrowserWindow({
"minWidth" : 800,
"minHeight": 600,
"webPreferences": {
"nodeIntegration": true; // Should be set to use any NodeAPI on renderer process
}
});
...
ipcMain.on('create-project-window', (_) => { createProjectWindow()});
index.html
<script>
function onClickSth() {
const {ipcRenderer} = require('electron');
ipcRenderer.send('create-project-window');
}
</script>
函数{
const{ipcrender}=require('electron');
发送('create-project-window');
}