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