电子执行javascript作为页面上的第一件事

时间:2017-10-04 10:07:15

标签: javascript electron

我有一个电子应用程序,打开一个带有某个网页的浏览器窗口。 现在,我想在该页面上执行一些javascript作为第一件事。但无论我尝试什么,它似乎总是在我打开的网页上的其他JS之后运行。

我尝试了一些事件,例如did-start-loading,例如:

window.webContents.on('did-start-loading', () => {
  window.webContents.executeJavaScript("console.log('test');");
})

将其直接放在loadUrl

之后
window.loadURL(url);
window.webContents.executeJavaScript(`console.log('test');`);

但是在这两种情况下test都会在页面上运行其他一些javascript之后被记录。

1 个答案:

答案 0 :(得分:1)

在创建浏览器窗口时包含预加载脚本。 防爆。

mainWindow = new BrowserWindow({
  webPreferences: {
    preload: path.join(__dirname, 'renderer.js')
  }
});

此处renderer.js在该窗口的任何其他js文件之前加载。

来自源代码 -

     /**
     * Specifies a script that will be loaded before other scripts run in the page.
     * This script will always have access to node APIs no matter whether node
     * integration is turned on or off. The value should be the absolute file path to
     * the script. When node integration is turned off, the preload script can
     * reintroduce Node global symbols back to the global scope. See example .
     */

让我知道这是否有效!