BrowserWindow 類讓你有創(chuàng)建一個瀏覽器窗口的權力。例如:
// In the main process. const BrowserWindow = require('electron').BrowserWindow; // Or in the renderer process. const BrowserWindow = require('electron').remote.BrowserWindow; var win = new BrowserWindow({ width: 800, height: 600, show: false }); win.on('closed', function() { win = null; }); win.loadURL('https://github.com'); win.show();
你也可以不通過chrome創(chuàng)建窗口,使用 Frameless Window API.
BrowserWindow 是一個 EventEmitter.
通過 options 可以創(chuàng)建一個具有本質(zhì)屬性的 BrowserWindow 。
type 的值和效果不同平臺展示效果不同,具體:
titleBarStyle 只在 OS X 10.10 Yosemite 或更新版本上支持,可用值:
webPreferences 參數(shù)是個對象,它的屬性:
BrowserWindow 對象可觸發(fā)下列事件:
注意: 一些事件只能在特定os環(huán)境中觸發(fā),已經(jīng)盡可能地標出.
返回:
當文檔改變標題時觸發(fā),使用 event.preventDefault() 可以阻止原窗口的標題改變.
返回:
在窗口要關閉的時候觸發(fā). 它在DOM的 beforeunload and unload 事件之前觸發(fā).使用 event.preventDefault() 可以取消這個操作
通常你想通過 beforeunload 處理器來決定是否關閉窗口,但是它也會在窗口重載的時候被觸發(fā)。在 Electron 中,返回一個空的字符串或 false 可以取消關閉.例如:
window.onbeforeunload = function(e) { console.log('I do not want to be closed'); // Unlike usual browsers, in which a string should be returned and the user is // prompted to confirm the page unload, Electron gives developers more options. // Returning empty string or false would prevent the unloading now. // You can also use the dialog API to let the user confirm closing the application. e.returnValue = false; };
當窗口已經(jīng)關閉的時候觸發(fā).當你接收到這個事件的時候,你應當刪除對已經(jīng)關閉的窗口的引用對象和避免再次使用它.
在界面卡死的時候觸發(fā)事件.
在界面恢復卡死的時候觸發(fā).
在窗口失去焦點的時候觸發(fā).
在窗口獲得焦點的時候觸發(fā).
在窗口最大化的時候觸發(fā).
在窗口退出最大化的時候觸發(fā).
在窗口最小化的時候觸發(fā).
在窗口從最小化恢復的時候觸發(fā).
在窗口size改變的時候觸發(fā).
在窗口移動的時候觸發(fā).
注意:在 OS X 中別名為 moved.
在窗口移動的時候觸發(fā).
在的窗口進入全屏狀態(tài)時候觸發(fā).
在的窗口退出全屏狀態(tài)時候觸發(fā).
在的窗口通過 html api 進入全屏狀態(tài)時候觸發(fā).
在的窗口通過 html api 退出全屏狀態(tài)時候觸發(fā).
在請求一個App Command.aspx)的時候觸發(fā). 典型的是鍵盤媒體或瀏覽器命令, Windows上的 "Back" 按鈕用作鼠標也會觸發(fā).
someWindow.on('app-command', function(e, cmd) { // Navigate the window back when the user hits their mouse back button if (cmd === 'browser-backward' && someWindow.webContents.canGoBack()) { someWindow.webContents.goBack(); } });
在滾動條事件開始的時候觸發(fā).
在滾動條事件結束的時候觸發(fā).
BrowserWindow 對象有如下方法:
返回一個所有已經(jīng)打開了窗口的對象數(shù)組.
返回應用當前獲得焦點窗口,如果沒有就返回 null.
根據(jù) webContents 查找窗口.
根據(jù) id 查找窗口.
添加位于 path 的開發(fā)者工具欄擴展,并且返回擴展項的名字.
這個擴展會被添加到歷史,所以只需要使用這個API一次,這個api不可用作編程使用.
刪除開發(fā)者工具欄名為 name 的擴展.
使用 new BrowserWindow 創(chuàng)建的實例對象,有如下屬性:
// In this example `win` is our instance var win = new BrowserWindow({ width: 800, height: 600 });
這個窗口的 WebContents 對象,所有與界面相關的事件和方法都通過它完成的.
查看 webContents documentation 的方法和事件.
窗口的唯一id.
使用 new BrowserWindow 創(chuàng)建的實例對象,有如下方法:
注意: 一些方法只能在特定os環(huán)境中調(diào)用,已經(jīng)盡可能地標出.
強制關閉窗口, unload and beforeunload 不會觸發(fā),并且 close 也不會觸發(fā), 但是它保證了 closed 觸發(fā).
嘗試關閉窗口,這與用戶點擊關閉按鈕的效果一樣. 雖然網(wǎng)頁可能會取消關閉,查看 close event.
窗口獲得焦點.
返回 boolean, 窗口是否獲得焦點.
展示并且使窗口獲得焦點.
展示窗口但是不獲得焦點.
隱藏窗口.
返回 boolean, 窗口是否可見.
窗口最大化.
取消窗口最大化.
返回 boolean, 窗口是否最大化.
窗口最小化. 在一些os中,它將在dock中顯示.
將最小化的窗口恢復為之前的狀態(tài).
返回 boolean, 窗口是否最小化.
設置是否全屏.
返回 boolean, 窗口是否全屏化.
由一個窗口來維持高寬比值. extraSize 允許開發(fā)者使用它,它的單位為像素,不包含在 aspectRatio 中.這個 API 可用來區(qū)分窗口的size和內(nèi)容的size .
想象一個普通可控的HD video 播放器窗口. 假如左邊緣有15控制像素,右邊緣有25控制像素,在播放器下面有50控制像素.為了在播放器內(nèi)保持一個 16:9 的高寬比例,我們可以調(diào)用這個api傳入?yún)?shù)16/9 and [ 40, 50 ].第二個參數(shù)不管網(wǎng)頁中的額外的寬度和高度在什么位置,只要它們存在就行.只需要把網(wǎng)頁中的所有額外的高度和寬度加起來就行.
重新設置窗口的寬高值,并且移動到指定的 x, y 位置.
返回一個對象,它包含了窗口的寬,高,x坐標,y坐標.
重新設置窗口的寬高值.
返回一個數(shù)組,它包含了窗口的寬,高.
重新設置窗口客戶端的寬高值(例如網(wǎng)頁界面).
返回一個數(shù)組,它包含了窗口客戶端的寬,高.
設置窗口最小化的寬高值.
返回一個數(shù)組,它包含了窗口最小化的寬,高.
設置窗口最大化的寬高值.
返回一個數(shù)組,它包含了窗口最大化的寬,高.
設置窗口是否可以被用戶改變size.
返回 boolean,窗口是否可以被用戶改變size.
設置窗口是否可以被用戶拖動. Linux 無效.
返回 boolean,窗口是否可以被用戶拖動. Linux 總是返回 true.
設置窗口是否可以最小化. Linux 無效.
返回 boolean,窗口是否可以最小化. Linux 總是返回 true.
設置窗口是否可以最大化. Linux 無效.
返回 boolean,窗口是否可以最大化. Linux 總是返回 true.
設置點擊最大化按鈕是否可以全屏或最大化窗口.
返回 boolean,點擊最大化按鈕是否可以全屏或最大化窗口.
設置窗口是否可以人為關閉. Linux 無效.
返回 boolean,窗口是否可以人為關閉. Linux 總是返回 true.
是否設置這個窗口始終在其他窗口之上.設置之后,這個窗口仍然是一個普通的窗口,不是一個不可以獲得焦點的工具箱窗口.
返回 boolean,當前窗口是否始終在其它窗口之前.
窗口居中.
移動窗口到對應的 x and y 坐標.
返回一個包含當前窗口位置的數(shù)組.
改變原窗口的title.
返回原窗口的title.
注意: 界面title可能和窗口title不相同.
開始或停止顯示窗口來獲得用戶的關注.
讓窗口不在任務欄中顯示.
進入或離開 kiosk 模式.
返回 boolean,是否進入或離開 kiosk 模式.
以 Buffer 形式返回這個具體平臺的窗口的句柄.
windows上句柄類型為 HWND ,OS X NSView* , Linux Window.
攔截windows 消息,在 WndProc 接收到消息時觸發(fā) callback函數(shù).
返回 true or false 來代表是否攔截到消息.
不攔截窗口消息.
窗口消息全部不攔截.
設置窗口當前文件路徑,并且將這個文件的圖標放在窗口標題欄上.
獲取窗口當前文件路徑.
明確指出窗口文檔是否可以編輯,如果可以編輯則將標題欄的圖標變成灰色.
返回 boolean,當前窗口文檔是否可編輯.
捕獲 rect 中的page 的快照.完成后將調(diào)用回調(diào)函數(shù) callback 并返回 image . image 是存儲了快照信息的NativeImage實例.如果不設置 rect 則將捕獲所有可見page.
類似 webContents.print([options])
類似 webContents.printToPDF(options, callback)
類似 webContents.loadURL(url[, options]).
類似 webContents.reload.
設置菜單欄的 menu ,設置它為 null 則表示不設置菜單欄.
在進度條中設置進度值,有效范圍 [0, 1.0].
當進度小于0時則不顯示進度; 當進度大于0時顯示結果不確定.
在libux上,只支持Unity桌面環(huán)境,需要指明 *.desktop 文件并且在 package.json 中添加文件名字.默認它為 app.getName().desktop.
向當前任務欄添加一個 16 x 16 像素的圖標,通常用來覆蓋一些應用的狀態(tài),或者直接來提示用戶.
設置窗口是否應該有陰影.在Windows和Linux系統(tǒng)無效.
返回 boolean,設置窗口是否有陰影.在Windows和Linux系統(tǒng)始終返回 true.
在窗口的任務欄button布局出為縮略圖添加一個有特殊button的縮略圖工具欄. 返回一個 Boolean 對象來指示是否成功添加這個縮略圖工具欄.
因為空間有限,縮略圖工具欄上的 button 數(shù)量不應該超過7個.一旦設置了,由于平臺限制,就不能移動它了.但是你可使用一個空數(shù)組來調(diào)用api來清除 buttons .
所有 buttons 是一個 Button 對象數(shù)組:
flags 是一個數(shù)組,它包含下面這些 Strings:
在界面查找選中文字時顯示彈出字典.
設置窗口的菜單欄是否可以自動隱藏. 一旦設置了,只有當用戶按下 Alt 鍵時則顯示.
如果菜單欄已經(jīng)可見,調(diào)用 setAutoHideMenuBar(true) 則不會立刻隱藏.
返回 boolean,窗口的菜單欄是否可以自動隱藏.
設置菜單欄是否可見.如果菜單欄自動隱藏,用戶仍然可以按下 Alt 鍵來顯示.
返回 boolean,菜單欄是否可見.
設置窗口是否在所有地方都可見.
注意: 這個api 在windows無效.
返回 boolean,窗口是否在所有地方都可見.
注意: 在 windows上始終返回 false.
忽略窗口的所有鼠標事件.
更多建議: