Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使HTML按钮执行Electron JS函数_Javascript_Html_Electron - Fatal编程技术网

Javascript 如何使HTML按钮执行Electron 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

我正在制作一个电子应用程序,它只是一个HTML网站,我想尝试将其集成到一个应用程序中。要使id为“createbutton”的标记在electron中执行JS函数,如createprojectwindow(),需要什么

main.js:

//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');
}