在 OS X 上创建类似窗口的菜单

7
我想要创建一个类似于这个应用的托盘菜单。因为它在使用node-webkit/nw.js的应用程序列表中,我认为这是可能的。我已经查阅了所有文档,但没有找到如何实现这一点的任何信息。在谷歌上搜索也没有得到什么有用的结果。
也许你们中的某一个之前已经做过这件事并且可以指导我?
1个回答

8

首先你需要防止应用程序出现在任务栏中。

{
    "name": "My App",
    "version": "1.0.0",
    "main": "app.html",
    "window": {
        "show": false,
        "show_in_taskbar": false
    }
}

然后您需要创建托盘(顶部栏)菜单:(以下是来源示例)
tray = new app.node.gui.Tray({
    title: '',
    icon: 'assets/css/images/menu_icon.png',
    alticon: 'assets/css/images/menu_alticon.png',
    iconsAreTemplates: false
});

然后需要创建一个隐藏窗口,并在托盘图标上单击时显示它:

// create window
var params = {toolbar: app.devMode, frame: false, transparent: true, resizable: false, show: false};
window = app.node.gui.Window.open('templates/panel.html', params);

function showPopup (x, y) {
  window.on('document-end', function()
    window.moveTo(x - (window.window.width / 2) - 6, y);
    window.show();
    window.focus();
  });
}

// show panel when click in tray
tray.on('click', function (evt) {
  showPopup(evt.x, evt.y);
});

请注意,这个程序在旧版本的node-webkit/nw.js上无法运行。我们使用0.8.6版本,因为我们使用了很多需要nodeJS 0.10的本地模块。在早期版本中,OS X中的Trayclick事件不会触发,但在Windows和Linux中会触发。正如在此问题中所讨论的那样。https://github.com/nwjs/nw.js/issues/1874#issuecomment-67249147 - Feanaro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接