托盘


Tray 是不同平台上不同控件的抽象,通常它是一个显示在操作系统通知区域的小图标。在 Mac OS X 上它被称为 Status Item,在 GTK 上它被称为 Status Icon,在 Windows 上它被称为 System Tray Icon

概述

// Create a tray icon
var tray = new nw.Tray({ title: 'Tray', icon: 'img/icon.png' });

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

// Remove the tray
tray.remove();
tray = null;

使用托盘进行页面导航

在页面中创建的可导航托盘在重新加载或导航后将无法使用。原因是托盘甚至网页在导航后会被 JS 引擎回收,以防止内存泄漏。因此建议在 **后台页面** 中使用托盘,后台页面在应用程序的生命周期中一直存在。有关如何在后台页面中执行脚本,请参阅 bg-scriptmain

new Tray(option)

  • option {Object}
    • title {String} 标题
    • tooltip {String} 工具提示
    • icon {String} 图标
    • alticon {String} 备用图标
    • iconsAreTemplates {Boolean} 图标是否为模板
    • menu {Menu} 弹出菜单

创建一个新的 Trayoption 是一个包含 Tray 初始设置的对象。每个字段在 Tray 中都有自己的属性,有关详细信息,请参阅每个属性的文档。

tray.title

获取或设置托盘的 title

在 Mac OS X 上,title 将与 icon 一起显示在状态栏中,但在 GTK 和 Windows 上没有效果,因为后两个平台只支持将托盘显示为图标。

tray.tooltip

获取或设置托盘的 tooltip。当您将鼠标悬停在 Tray 上时,tooltip 会显示。

注意

tooltip 在所有三个平台上显示。应将其设置为 Tray 属性,而不是从 option 对象构造函数设置。

tray.icon

获取或设置托盘的 iconicon 必须是图标文件的路径。它可以是相对于应用程序的图标的相对路径,也可以是指向用户系统中文件的绝对路径。

Mac

Mac OS X 注意事项:在通知上下文中使用时,png 图标不会像 Windows 通知区域那样缩小,而是以 1:1 的比例显示。

tray.alticon (Mac)

获取或设置备用(活动)托盘图标。

tray.iconsAreTemplates (Mac)

获取或设置是否将iconalticon图像视为“模板”(默认情况下为true)。当该属性设置为true时,这些图像将被视为“模板”,系统会自动根据状态项的不同状态(例如,深色菜单、浅色菜单等)确保适当的样式。模板图像应仅包含黑色和透明颜色,并且可以使用图像中的 alpha 通道来调整黑色内容的不透明度。

tray.menu

获取或设置托盘的menu,点击托盘图标时会显示menu

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

为了减少不同平台之间的差异,设置menu属性是将菜单绑定到托盘的唯一方法,无法通过在 Linux 和 Windows 上单击左键来弹出菜单。

tray.remove()

移除托盘。

移除后,您将无法再次显示它,并且应将您的托盘变量设置为null以使其被垃圾回收。无法临时隐藏托盘图标。

事件:点击

当用户用鼠标左键单击菜单项时发出。

您无法捕获鼠标右键单击,因为它用于显示菜单。即使您没有将菜单绑定到托盘,您仍然无法监听它。双击事件也会被忽略。

Mac

NW.js 不支持菜单栏(+拖动),因为它会禁止 NW.js 应用程序在 App Store 中分发。