我一直在关注Electron的教程,我在新的BrowserWindow中使用html文档作为弹出窗口。问题是,当我在html标签上使用onclick处理程序时,它似乎没有触发。如果我打开开发人员工具,我可以在控制台中输入我的函数,它的行为符合预期!
不确定我是否遗漏了一些非常明显的东西,但我很感激能帮助我解决问题的人。
以下是来自BrowserWindow的html的body标签:
<body id="page-info">
<main class="info-content">
<h3 class="page-headline">Wisdom Pet</h3>
<p>Welcome to the Wisdom Pet App.<br>
<strong>Version 1.0.0</strong><br>
<small>Built with love by <a href="#" onclick="shell.openExternal('http://raybo.org')">Ray Villalobos</a></small>
</p>
<p><a href="#" id="closeAbout" onclick="send()">close window</a></p>
</main>
<script type="text/javascript">enter code here
var electron = require('electron');
var shell = electron.shell;
var ipc = electron.ipcRenderer;
/* Also tried using event listeners without html onclick
var closeAbout= document.getElementById("closeAbout");
closeAbout.addEventListener("click", function(){
send();
});
*/
function send(){
console.log("sending...");
ipc.sendSync('closeInfoWindow')
}
</script>
这是main.js文件:
var Electron = require("electron");
var Menu = Electron.Menu;
var BrowserWindow = Electron.BrowserWindow;
var app = Electron.app;
var ipc = Electron.ipcMain;
var myAppMenu, menuTemplate;
app.on("ready", function(){
var appWindow = new BrowserWindow({
show: false
});
appWindow.loadURL("file://" + __dirname + "/index.html");
var infoWindow = new BrowserWindow({
show: false,
width: 400,
height: 300,
frame: false,
transparent: true,
});
infoWindow.loadURL('file://' + __dirname + '/info.html');
appWindow.once("ready-to-show", function(){
appWindow.show();
});
ipc.on("openInfoWindow", function(event, arg){
event.returnValue = "";
infoWindow.show();
})
ipc.on('closeInfoWindow', function(event, arg){
event.returnValue = '';
infoWindow.hide();
}); //closeInfoWindow
});
ipc.on(“openInfoWindow”)可以在主窗口中正常工作,但是一旦infoWindow打开,我就无法关闭它,除非我直接从开发人员工具发送代码。