Javascript electron:在托盘应用程序中显示基本通知

Javascript electron:在托盘应用程序中显示基本通知,javascript,electron,tray,Javascript,Electron,Tray,我正在制作托盘应用程序,并尝试显示基本通知: 我的main.js文件和package.json如下所示: 我的app/main.js文件 const path = require('path'); const { app, globalShortcut, Tray, Notification } = require('electron'); app.on('ready', () => {

我正在制作托盘应用程序,并尝试显示基本通知:

我的main.js文件和package.json如下所示:

我的app/main.js文件

 const path = require('path');
    const {
        app,
        globalShortcut,
        Tray,
        Notification
    } = require('electron');

    app.on('ready', () => {
        tray = new Tray(path.join(__dirname, 'icon-light.png'));

        globalShortcut.register('CommandOrControl+Shift+N', () => {
            console.log("Roger");
            let myNotification = new Notification('Title', {
                body: 'Rabbit'
            })

            myNotification.onclick = () => {
                console.log('Notification clicked')
            }
        });
    })
mypackage.json文件

{
  "name": "test_notification",
  "version": "1.0.0",
  "description": "",
  "main": "app/main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "electron": "^5.0.1"
  }
}
当我触发击键命令Control+Shift+N时,它会显示console.log,但不会显示通知


您知道如何执行此操作吗?

您在以下代码中遗漏了
新的

let myNotification = new Notification('Title', {
                body: 'Rabbit'
            })

参考资料:

您在以下代码中遗漏了
new

let myNotification = new Notification('Title', {
                body: 'Rabbit'
            })

参考:

从主进程发送的通知不使用,而是使用而不是模块;这就是为什么提供的代码通过分解
require('electron')的结果正确地获得
通知
构造函数的原因:

但界面略有不同:

  • 只接受一个
    选项
    参数,其中包括
    标题

    let myNotification = new Notification({
        title: 'Title',
        body: 'Rabbit'
    });
    
  • 然后,必须使用以下方式明确显示通知:

notification.show()

立即向用户显示通知,请注意这意味着 与HTML5通知实现不同,实例化
新通知
不会立即向用户显示,您需要 在操作系统显示此方法之前调用它


从主进程发送的通知不使用,而是使用而不是模块;这就是为什么提供的代码通过分解
require('electron')的结果正确地获得
通知
构造函数的原因:

但界面略有不同:

  • 只接受一个
    选项
    参数,其中包括
    标题

    let myNotification = new Notification({
        title: 'Title',
        body: 'Rabbit'
    });
    
  • 然后,必须使用以下方式明确显示通知:

notification.show()

立即向用户显示通知,请注意这意味着 与HTML5通知实现不同,实例化
新通知
不会立即向用户显示,您需要 在操作系统显示此方法之前调用它


很抱歉你是对的,但这只是我的疏忽。即使是新的,它也不起作用。我会修正我的问题组。对不起,你是对的,但这只是我的一种遗忘。它甚至不适用于new,我将修复我的问题它看起来不错,但当我编写let myNotification=new Notification({title:'title',body:'Rabbit'})时;myNotification.onclick=()=>{console.log('Notification clicked')}myNotification.show();然后,没有显示通知id因为主进程不使用HTML5API,所以也没有
onclick
处理程序。。。请参阅电子文档,特别是本节。这应该有效:
myNotification.show();myNotification.on('click',()=>{console.log('Notification clicked');})是否按此顺序…感谢您的回答,但无论点击事件如何,都不会显示任何通知。这可能取决于平台或某些系统设置,我不知道。你可能想尝试安装这个简单的应用程序,看看它的源代码,它在macOS、LinuxMint和Ubuntu上为我工作;不过它没有实现全局键盘快捷键。它看起来不错,但当我编写时,让myNotification=new通知({title:'title',body:'Rabbit'});myNotification.onclick=()=>{console.log('Notification clicked')}myNotification.show();然后,没有显示通知id因为主进程不使用HTML5API,所以也没有
onclick
处理程序。。。请参阅电子文档,特别是本节。这应该有效:
myNotification.show();myNotification.on('click',()=>{console.log('Notification clicked');})是否按此顺序…感谢您的回答,但无论点击事件如何,都不会显示任何通知。这可能取决于平台或某些系统设置,我不知道。你可能想尝试安装这个简单的应用程序,看看它的源代码,它在macOS、LinuxMint和Ubuntu上为我工作;但它没有实现全局键盘快捷键。