托盤


Tray 是不同平台上不同控制項的抽象,通常它是一個顯示在作業系統通知區域的小圖示。在 Mac OS X 上,它稱為 狀態項目,在 GTK 上,它稱為 狀態圖示,在 Windows 上,它稱為 系統托盤圖示

概要

// 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;

使用包含頁面導覽的 Tray

在頁面中建立的托盤,在重新載入或導航後將無法運作。原因是托盤甚至網頁,在導航後將會被 JS 引擎當作垃圾回收,以防止記憶體外洩。因此建議在背景頁面中使用托盤,它會存在於應用程式的生命週期中。請參閱 bg-scriptmain,了解如何在背景頁面中執行腳本。

new Tray(選項)

  • 選項 {物件}
    • 標題 {字串} 標題
    • 工具提示 {字串} 工具提示
    • 圖示 {字串} 圖示
    • 替代圖示 {字串} 替代圖示
    • 圖示為範本 {布林值} 圖示是否為範本
    • 功能表 {功能表} 快顯功能表

建立一個新的 托盤選項 是包含 托盤 初始設定的物件。每個欄位在 托盤 中都有自己的屬性,請參閱每個屬性的文件以取得詳細資訊。

tray.title

取得或設定托盤的 標題

在 Mac OS X 中,標題 會與其 圖示 一起顯示在狀態列上,但它不會影響 GTK 和 Windows,因為後兩個平台只支援將托盤顯示為圖示。

tray.tooltip

取得或設定托盤的 工具提示。當您將滑鼠游標懸停在 托盤 上時,工具提示 會顯示。

注意事項

工具提示 會顯示在所有三個平台上。應該從 托盤 屬性設定,而不是從 選項 物件建構函式設定。

tray.icon

取得或設定托盤的 圖示圖示 必須是圖示檔案的路徑。它可以是指向應用程式中圖示的相對路徑,或是指向使用者系統中檔案的絕對路徑。

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 以進行垃圾回收。沒有辦法暫時隱藏托盤圖示。

事件:click

當使用者使用滑鼠左鍵按一下選單項目時觸發。

您無法使用滑鼠右鍵按一下來捕捉,因為它用於顯示選單。即使您未將選單繫結至托盤,您仍然無法聆聽它。雙按事件也會被忽略。

Mac

NW.js 不支援選單列(+拖曳),因為它會禁止 NW.js 應用程式在 App Store 中散布。