gpt4 book ai didi

javascript - 如何同时在Electron中触发JavaScript警报和通知?

转载 作者:行者123 更新时间:2023-12-03 12:40:59 27 4
gpt4 key购买 nike

我正在使用用Electron构建的Web应用程序。

以下代码将Electron通知let myNotification用于OSX系统通知。并且JS警报将常规警报发送到应用程序窗口。

   var timerIDtwo = setInterval(function() {
if (navigator.onLine) {
var date = new Date();
var time = date.toLocaleTimeString();
let myNotification = new Notification('TRENUTNO STE ONLINE!', {
body: 'Baza podataka je dostupna!\n\nVrijeme poruke:'+time
});
alert('TRENUTNO STE ONLINE!\n\nBaza podataka je dostupna!\n\nVrijeme poruke: '+time);
// clearInterval(timerID);
} else {
//else
}
}, 10 * 1000);

问题:

只有在警报消息上单击“确定”后,才会触发操作系统通知。它应该同时触发两个彼此不依赖的对象。
一旦我删除另一个,就可以正常工作。

我尝试将新功能中的一个与其他事物(例如更改顺序)相互隔离,但是在关闭警报后始终会触发。

请指教。

编辑:
如果我将它们分开并先发出通知,则将其作为通缉通知发出,然后在2秒后发出警报,但只有在警报关闭后才再次发出下一个通知。
<script type="text/javascript">
var timerID = setInterval(function() {
if (navigator.onLine) {
var date = new Date();
var time = date.toLocaleTimeString();
let myNotification = new Notification('TRENUTNO STE ONLINE!', {
body: 'Baza podataka je dostupna!\n\nVrijeme poruke:'+time
});
} else {
//
}
}, 10 * 1000);
</script>


<script type="text/javascript">
var timerID = setInterval(function() {
if (navigator.onLine) {
var date = new Date();
var time = date.toLocaleTimeString();
alert('TRENUTNO STE ONLINE!\n\nBaza podataka je dostupna!\n\nVrijeme poruke: '+time);
// clearInterval(timerID);
} else {
//
}
}, 12 * 1000);
</script>

最佳答案

如另一个答案所述,当您调用alert()时,渲染器进程中的执行将暂停。

为了解决此限制,您可以使用Electron的 Notification API从主进程中生成通知。

使用IPC从渲染器与您希望触发通知的主进程进行通信。

// main.js
const { Notification, ipcMain } = require('electron')

ipcMain.on('notification', () => {
const n = new Notification({
title: "Notification",
body: "Not blocked by alert!"
});
n.show()
})

// renderer.js
const { ipcRenderer } = require('electron')

ipcRenderer.send('notification')
alert('I am an alert.')

即使在执行 alert之后仍将阻止渲染器进程,但主进程不受影响,并且能够触发通知。

example中查看此可运行的 Electron Fiddle可打开的。

关于javascript - 如何同时在Electron中触发JavaScript警报和通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60987404/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com