托盘
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-script
和 main
。
new Tray(option)
option
{Object}
title
{String}
标题tooltip
{String}
工具提示icon
{String}
图标alticon
{String}
备用图标iconsAreTemplates
{Boolean}
图标是否为模板menu
{Menu}
弹出菜单
创建一个新的 Tray
,option
是一个包含 Tray
初始设置的对象。每个字段在 Tray
中都有自己的属性,有关详细信息,请参阅每个属性的文档。
tray.title
获取或设置托盘的 title
。
在 Mac OS X 上,title
将与 icon
一起显示在状态栏中,但在 GTK 和 Windows 上没有效果,因为后两个平台只支持将托盘显示为图标。
tray.tooltip
获取或设置托盘的 tooltip
。当您将鼠标悬停在 Tray
上时,tooltip
会显示。
注意
tooltip
在所有三个平台上显示。应将其设置为 Tray
属性,而不是从 option
对象构造函数设置。
tray.icon
获取或设置托盘的 icon
,icon
必须是图标文件的路径。它可以是相对于应用程序的图标的相对路径,也可以是指向用户系统中文件的绝对路径。
Mac
Mac OS X 注意事项:在通知上下文中使用时,png 图标不会像 Windows 通知区域那样缩小,而是以 1:1 的比例显示。
tray.alticon (Mac)
获取或设置备用(活动)托盘图标。
tray.iconsAreTemplates (Mac)
获取或设置是否将icon
和alticon
图像视为“模板”(默认情况下为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 中分发。