Electron BrowserWindow 模块

BrowserWindow 类

BrowserWindow 类让你有创建一个浏览器窗口的权力。例如:

// 主进程调用
const BrowserWindow = require('electron').BrowserWindow;

// 或者渲染进程这样调用
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();

通过 options 可以创建一个具有本质属性的 BrowserWindow(浏览器窗口):

new BrowserWindow([options])

BrowserWindow 属性

属性描述
widthInteger - 窗口宽度,单位像素. 默认是 800。
heightInteger - 窗口高度,单位像素. 默认是 600。
xInteger - 窗口相对于屏幕的左偏移位置.默认居中。
yInteger - 窗口相对于屏幕的顶部偏移位置.默认居中。
useContentSizeBoolean - width 和 height 使用web网页size, 这意味着实际窗口的size应该包括窗口框架的size,稍微会大一点,默认为 false。
centerBoolean - 窗口屏幕居中。
minWidthInteger - 窗口最小宽度,默认为 0。
minHeightInteger - 窗口最小高度,默认为 0。
maxWidthInteger - 窗口最大宽度,默认无限制。
maxHeightInteger - 窗口最大高度,默认无限制。
resizableBoolean - 是否可以改变窗口size,默认为 true。
movableBoolean - 窗口是否可以拖动. 在 Linux 上无效. 默认为 true。
minimizableBoolean - 窗口是否可以最小化. 在 Linux 上无效. 默认为 true。
maximizableBoolean - 窗口是否可以最大化. 在 Linux 上无效. 默认为 true。
closableBoolean - 窗口是否可以关闭. 在 Linux 上无效. 默认为 true。
alwaysOnTopBoolean - 窗口是否总是显示在其他窗口之前. 在 Linux 上无效. 默认为 false。
fullscreenBoolean - 窗口是否可以全屏幕. 当明确设置值为When false ,全屏化按钮将会隐藏,在 OS X 将禁用. 默认 false。
fullscreenableBoolean - 在 OS X 上,全屏化按钮是否可用,默认为 true。
titleString - 窗口默认title. 默认 "Electron"。
iconNativeImage - 窗口图标, 如果不设置,窗口将使用可用的默认图标。
showBoolean - 窗口创建的时候是否显示. 默认为 true。
frameBoolean - 指定 false 来创建一个 Frameless Window. 默认为 true。
autoHideMenuBarBoolean - 除非点击 Alt,否则隐藏菜单栏.默认为 false。
enableLargerThanScreenBoolean - 是否允许允许改变窗口大小大于屏幕. 默认是 false。
backgroundColorString -窗口的 background color 值为十六进制。如 #66CD00 或 #FFF 或 #80FFFFFF (支持透明度)。默认为在 Linux 和 Windows 上为 #000 (黑色),Mac上为 #FFF(或透明)。
hasShadowBoolean - 窗口是否有阴影。只在 OS X 上有效. 默认为 true。
transparentBoolean - 窗口透明。默认为 false。
webPreferencesObject - 设置界面特性,下面查看更多

webPreferences参数是个对象,它的属性

属性描述
nodeIntegrationBoolean - 是否完整支持node。默认为 true。
javascriptBoolean - 开启javascript支持. 默认为true。
webSecurityBoolean - 当设置为 false,它将禁用相同地方的规则 (通常测试服), 并且如果有2个非用户设置的参数,就设置 allowDisplayingInsecureContent 和 allowRunningInsecureContent 的值为true. 默认为 true
imagesBoolean - 开启图片使用支持. 默认 true
textAreasAreResizableBoolean - textArea 可以编辑. 默认为 true
webglBoolean - 开启 WebGL 支持. 默认为 true
webaudioBoolean - 开启 WebAudio 支持,默认为 true
defaultFontFamilyObject - 设置 font-family 默认字体。standard String - 默认为 Times New Roman。serif String - 默认为 Times New Roman。sansSerif String - 默认为 Arial。monospace String - 默认为 Courier New
defaultFontSizeInteger - 默认为 16
defaultMonospaceFontSizeInteger - 默认为 13.
minimumFontSizeInteger - 默认为 0
defaultEncodingString - 默认为 ISO-8859-1

BrowserWindow 事件

BrowserWindow 对象可触发下列事件:

注意

一些事件只能在特定os环境中触发,已经尽可能地标出.

page-title-updated

当文档改变标题时触发,使用 event.preventDefault() 可以阻止原窗口的标题改变。

close

在窗口要关闭的时候触发. 它在DOMbeforeunload and unload 事件之前触发.使用 event.preventDefault() 可以取消这个操作

通常你想通过 beforeunload 处理器来决定是否关闭窗口,但是它也会在窗口重载的时候被触发。在 Electron 中,返回一个空的字符串或 false 可以取消关闭.例如:

window.onbeforeunload = function(e) {
  console.log('I do not want to be closed');
  e.returnValue = false;
};

closed

当窗口已经关闭的时候触发.当你接收到这个事件的时候,你应当删除对已经关闭的窗口的引用对象和避免再次使用它。

unresponsive

在界面卡死的时候触发事件。

responsive

在界面恢复卡死的时候触发。

blur

在窗口失去焦点的时候触发。

focus

在窗口获得焦点的时候触发。

maximize

在窗口最大化的时候触发。

unmaximize

在窗口退出最大化的时候触发.

minimize

在窗口最小化的时候触发。

restore

在窗口从最小化恢复的时候触发。

resize

在窗口改变的时候触发.

move

在窗口移动的时候触发,注意:在 OS X 中别名为 moved。

enter-full-screen

在的窗口进入全屏状态时候触发。

leave-full-screen

在的窗口退出全屏状态时候触发。

scroll-touch-begin OS X

在滚动条事件开始的时候触发。

scroll-touch-end OS X

在滚动条事件结束的时候触发。

BrowserWindow 方法

BrowserWindow.getAllWindows()

返回一个所有已经打开了窗口的对象数组。

BrowserWindow.getFocusedWindow()

返回应用当前获得焦点窗口,如果没有就返回 null。

BrowserWindow.fromWebContents(webContents)

  • ·webContents` 根据 webContents 查找窗口

BrowserWindow.fromId(id)

  • id Integer

根据 id 查找窗口。

BrowserWindow.addDevToolsExtension(path)

  • path String 添加位于 path 的开发者工具栏扩展,并且返回扩展项的名字。

这个扩展会被添加到历史,所以只需要使用这个API一次,这个api不可用作编程使用

BrowserWindow.removeDevToolsExtension(name)

  • name String 删除开发者工具栏名为 name 的扩展.

BrowserWindow 实例属性

使用 new BrowserWindow 创建的实例对象,有如下属性:

// In this example `win` is our instance
var win = new BrowserWindow({ width: 800, height: 600 });

win.webContents

这个窗口的 WebContents 对象,所有与界面相关的事件和方法都通过它完成的。

win.id

窗口的唯一id。

BrowserWindow 实例方法

使用 new BrowserWindow 创建的实例对象,有如下方法:

win.destroy()

强制关闭窗口, unload and beforeunload 不会触发,并且 close 也不会触发, 但是它保证了 closed 触发.

win.close()

尝试关闭窗口,这与用户点击关闭按钮的效果一样. 虽然网页可能会取消关闭,查看 close event

win.focus()

窗口获得焦点。

win.isFocused()

返回 boolean, 窗口是否获得焦点.

win.show()

展示并且使窗口获得焦点。

win.showInactive()

展示窗口但是不获得焦点。

win.hide()

隐藏窗口。

win.isVisible()

返回 boolean, 窗口是否可见。

win.maximize()

窗口最大化。

win.unmaximize()

取消窗口最大化。

win.isMaximized()

返回 boolean, 窗口是否最大化。

win.minimize()

窗口最小化,在一些os中,它将在dock中显示。

win.restore()

将最小化的窗口恢复为之前的状态。

win.isMinimized()

返回 boolean, 窗口是否最小化。

win.setFullScreen(flag)

  • flag Boolean 设置是否全屏。

win.isFullScreen()

返回 boolean, 窗口是否全屏化。

win.setBounds(options[, animate])

  • options Object
    • x Integer
    • y Integer
    • width Integer
    • height Integer
  • animate Boolean (可选) OS X

重新设置窗口的宽高值,并且移动到指定的 x, y 位置.

win.getBounds()

返回一个对象,它包含了窗口的宽,高,x坐标,y坐标.

win.setSize(width, height[, animate])

  • width Integer
  • height Integer
  • animate Boolean (可选) OS X

重新设置窗口的宽高值。

win.getSize()

返回一个数组,它包含了窗口的宽,高。