0

render.js ファイルを使用して、レンダリングされた html ページの javascript から「api」呼び出しを書き込むのに問題があります。

main.js の新しい BrowserWindow 関数には以下が含まれます。

    webPreferences: {
        nodeIntegration: false, // is default value after Electron v5
        contextIsolation: true, // protect against prototype pollution
        enableRemoteModule: false, // turn off remote
        preload: "preload.js" // use a preload script  
    },

preload.js:

const { ipcRenderer, contextBridge } = require('electron')

contextBridge.exposeInMainWorld(
    "api", {
        send: (channel, data) => {
            let validChannels = ["login"];
            if (validChannels.includes(channel)) {
                ipcRenderer.send(channel, data);
            }
        },
        receive: (channel, func) => {
            let validChannels = ["fromMain"];
            if (validChannels.includes(channel)) {
                ipcRenderer.on(channel, (event, ...args) => func(...args));
            }
        }
    }
);

passwordPage.html にリンクされている passwordPage.js:

document.getElementById("login").addEventListener('click', function() {
    window.api.send("login", "test");
})

passwordPage のコンソールのエラー:

Uncaught TypeError: Cannot read property 'send' of undefined
4

1 に答える 1