【问题标题】:NWJS (Node-Webkit) Open tray menu using left clickNWJS (Node-Webkit) 使用左键打开托盘菜单
【发布时间】:2015-03-24 06:52:25
【问题描述】:

如何通过左键单击打开tray menu

默认情况下,通过单击右键打开菜单。

代码:

// Load native UI library
var gui = require('nw.gui');

// Create a tray icon
var tray = new gui.Tray({
    title: 'Tray',
    icon: 'img/icon.png',
    click: function(){
        // Open tray menu here!!
        console.log('READY!!!');
    }
});

// Give it a menu
var menu = new gui.Menu();
menu.append(new gui.MenuItem({ type: 'checkbox', label: 'box1' }));
tray.menu = menu;

【问题讨论】:

  • 您是否尝试过监听托盘点击事件,并手动调用菜单点击事件? ` tray.on('click', function(click) { tray.menu.popup(click.x, click.y); }); ` 应该可以解决问题,但我还没有测试过。您可能必须使用点击事件来获取位置。将其转换为 JSON 并在不起作用时打印。
  • @LukeAdams 我已经尝试过了,但是 x 和 y 与窗口无关,因此弹出窗口在错误的位置打开

标签: javascript node-webkit


【解决方案1】:

托盘菜单

获取或设置托盘菜单,点击托盘图标会显示菜单。

在 Mac OS X 上,当您单击托盘时将显示菜单(这是 Mac OS X 上托盘图标唯一可用的操作)。在 Windows 和 Linux 上,当你用鼠标右键单击托盘时会显示菜单,用鼠标左键单击会发送单击事件并且不显示菜单。

为了减少不同平台的差异,设置菜单属性是绑定菜单到托盘的唯一方法,Linux和Windows无法通过鼠标左键弹出菜单

https://github.com/nwjs/nw.js/wiki/Tray

不过,您可以制作自定义托盘菜单,请查看:Create window-like menu on OS X

【讨论】:

    【解决方案2】:

    对我来说,这没问题(CoffeeScript):

    tray.on "click",
      (clickEvent) =>
        win.focus()
        tray.menu.popup(clickEvent.x - win.x - (window.screen.width - window.screen.availWidth), clickEvent.y - win.y - (window.screen.height - window.screen.availHeight))
        return false
    

    胜利是:

    win = gui.Window.get()
    

    【讨论】:

      猜你喜欢
      • 2015-07-09
      • 1970-01-01
      • 2014-09-07
      • 2017-10-28
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      相关资源
      最近更新 更多