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