如何从Electron中的远程访问BrowserWindow的DOM

时间:2019-06-28 15:23:26

标签: javascript html node.js electron

我正在尝试创建一个电子应用程序,该应用程序在主过程中包含一个按钮,该按钮会在单击时加载带有远程模块的新BrowserWindow

我希望这个新BrowserWindow中的第二个按钮使用exec中的child_process命令。

我尝试addEventListener到第二个按钮,但是它无法访问DOM(只能访问index.html的getElementByID

main.js代码段

const {app, BrowserWindow} = require('electron')
require('electron-reload')(__dirname)
.
.
.
mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration:true
    }
  })

  // and load the index.html of the app.
  mainWindow.loadFile('index.html')

index.html

<head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
   <button id="1" onclick="render()">Primary Click</button>
    <script src="./renderer.js"></script>
     <script src="./main.js"></script>
  </body>

渲染器脚本(在main.js中)

function render(){
  const { BrowserWindow } = require('electron').remote
  const { exec } = require("child_process")
  let win = new BrowserWindow({ width: 800, height: 600 })
  win.loadFile('index2.html')
  win.webContents.openDevTools()
  win.webContents.once("dom-ready", ()=>{
     document.getElementById("2").addEventListener("click", function(){
      exec("echo hello >> hello.txt") 
    })
  })
}

index2.html

<head>
    <meta charset="UTF-8">
    <title>Hello World2!</title>
  </head>
  <body>
    <button id="2">Secondary Click</button>
    <script src="./renderer.js"></script>
  </body>

我得到了错误:

Cannot read property 'addEventListener' of null

0 个答案:

没有答案