Electron官方文档(v1.6.1)中文翻译我爱编程

3. BrowserWindow

2017-03-06  本文已影响3588人  Shmily落墨

原文:https://github.com/electron/electron/blob/master/docs/api/browser-window.md
译者:Lin

创建并且控制浏览器窗口。

进程:主进程

// In the main process.
const {BrowserWindow} = require('electron')

// Or use `remote` from the renderer process.
// const {BrowserWindow} = require('electron').remote

let win = new BrowserWindow({width: 800, height: 600})
win.on('closed', () => {
    win = null
})

// Load a remote URL
win.loadURL('https://github.com')

// Or load a local HTML file
win.loadURL(`file://${__dirname}/app/index.html`)

<h2 id="frameless-window">无框架窗口</h2>

创建一个没有chrome的窗口,或者一个任意形状的透明窗口,你可以使用Frameless Window接口。

<h2 id="showing-window-gracefully">优雅的展示窗口</h2>

当直接在窗口中加载一个页面,用户可能看到页面逐渐加载的过程,这对于原生应用来说不是一个很好的体验。为了使窗口没有视觉上的闪烁,针对不同的情况这里又两种解决方案。

<h3 id="using-ready-to-show-event">使用<code>ready-to-show</code>事件</h3>

页面加载的时候,渲染进程已经开始首次绘制时ready-to-show事件将会被分发,在这个事件之后展示窗口将不会出现视觉上的闪烁:

const {BrowserWindow} = require('electron')
let win = new BrowserWindow({show: false})
win.once('ready-to-show', () => {
    win.show()
})

这个事件通常在did-finish-load事件之后被分发,但是包含了很多远程资源的页面可能会在did-finish-load事件之前被分发。

<h3 id="setting-backgroundColor">设置<code>backgroundColor`</code></h3>

在一个复杂的应用中,ready-to-show事件可能很晚才会被分发,这会使得应用感觉很慢。这种情况下,建议立刻展示窗口,使用一个backgroundColor覆盖住你应用的背景:

const {BrowserWindow} = require('electron')

let win = new BrowserWindow({backgroundColor: '#2e2c29'})
win.loadURL('https://github.com')

值得注意的是,即使应用使用了ready-to-show事件,也依然建议设置backgroundColor来使得应用更像原生应用。

<h2 id="parent-and-child-windows">父窗口和子窗口</h2>

通过使用parent选项,你可以创建一个子窗口:

const {BrowserWindow} = require('electron')

let top = new BrowserWindow()
let child = new BrowserWindow({parent: top})
child.show()
top.show()

这个child窗口将总展示在top窗口的上面。

<h3 id="modal-windows">模态窗口</h3>

一个模态窗口是一个禁用父窗口的子窗口,创建一个模态窗口,你需要设置parentmodal选项:

const {BrowserWindow} = require('electron')

let child = new BrowserWindow({parent: top, modal: true, show: false})
child.loadURL('https://github.com')
child.once('ready-to-show', () => {
  child.show()
})

<h3 id="platform-notices">平台的注意事项</h3>

<h2 id="class-browserWindow">类:BrowserWindow</h2>

创建并且控制浏览器窗口。

进程:主进程

BrowserWindow是一个EventEmitter

它使用options设置的本地属性的创建一个新的BrowserWindow

<h3 id="new-browserWindow"><code>new BrowserWindow([options])</code></h3>

使用minWidth/maxWidth/minHeight/maxHeight设置窗口大小的最小值和最大值只会限制使用者。它并不会阻止你设置一个不遵循setBounds/setSize的和BrowserWindow的构造函数内的大小约束。

type选项的可能值和对应的行为取决于运行的平台。可能值有:

<h3 id="instance-events">对象的事件</h3>

使用new BrowserWindow创建的对象会分发以下事件:

注意:一些事件只在特定的操作系统中有效,已经被标记出来。

<h4 id="event-page-title-updated">事件:‘page-title-updated’</h4>

返回值为:

当文档改变它自己的标题时被分发,调用event.preventDefault()将阻止本地窗口的标题改变。

<h4 id="event-close">事件:‘close’</h4>

返回值为:

当窗口将要被关闭时被分发。它会在DOM的beforeunloadunload事件之前被分发。调用event.preventDefault()会取消关闭。

通常你需要使用beforeunload来处理是否关闭窗口的决定,当窗口重新加载的时候也会被调用。Electron中,返回除了undefined之外的任何值都将会取消关闭。例如:

window.onbeforeunload = (e) => {
console.log('我不想要被关闭')

  // 不同于其他浏览器提供给用户一个消息盒子,返回一个非空值将会默默的取消关闭。
  // 建议使用dialog接口来让用户确认关闭应用。
  e.returnValue = false

}

<h4 id="event-closed">事件:‘closed’</h4>

当窗口被关闭的时候被分发。你收到这个事件之后你需要移除关于这个窗口的引用,并且避免再次使用它。

<h4 id="event-unresponsive">事件:‘unresponsive’</h4>

当网页变成无应答状态时被分发。

<h4 id="event-responsive">事件:‘responsive’</h4>

当无应答的网页再次有反应时被分发。

<h4 id="event-blur">事件:‘blur’</h4>

当焦点不在窗口上时被分发。

<h4 id="event-focus">事件:‘focus’</h4>

当窗口获得焦点的时候被分发。

<h4 id="event-show">事件:‘show’</h4>

当窗口被展示的时候被分发。

<h4 id="event-hide">事件:‘hide’</h4>

当窗口被隐藏的时候被分发。

<h4 id="event-ready-to-show">事件:‘ready-to-show’</h4>

当网页已经被渲染完成,可以在没有视觉上的闪烁的情况下被展示的时候被分发。

<h4 id="event-maximize">事件:‘maximize’</h4>

窗口最大化的时候被分发。

<h4 id="event-unmaximize">事件:‘unmaximize’</h4>

窗口退出最大化状态时被分发。

<h4 id="event-minimize">事件:‘minimize’</h4>

窗口最小化的时候被分发。

<h4 id="event-restore">事件:‘restore’</h4>

当窗口从最小化状态被恢复的时候被分发。

<h4 id="event-resize">事件:‘resize’</h4>

当窗口开始被调整大小的时候被分发。

<h4 id="event-move">事件:‘move’</h4>

窗口开始被移动到新的位置的时候被分发。

注意:MacOS中这个事件仅仅是moved事件的一个别名。

<h4 id="event-moved">事件:‘moved’ <i>(MacOS)</i></h4>

当窗口已经被移动到新的位置的时候被分发一次。

<h4 id="event-enter-full-screen">事件:‘enter-full-screen’</h4>

当窗口进入全屏状态的时候被分发。

<h4 id="event-leave-full-screen">事件:‘leave-full-screen’</h4>

当窗口从全屏状态中推出的时候被分发。

<h4 id="event-enter-html-full-screen">事件:‘enter-html-full-screen’</h4>

当窗口因为HTML接口而进入全屏状态的时候被分发。

<h4 id="event-leave-html-full-screen">事件:‘leave-html-full-screen’</h4>

当窗口因为HTML接口而从全屏状态中退出的时候被分发。

<h4 id="event-app-command">事件:‘app-command’ <i>(Windows)</i></h4>

返回值为:

当一个应用命令被调用的时候被分发。这些通常关系到键盘的媒体键或浏览器命令,以及Windows中一些鼠标上的“Back”按钮。

命令是小写字母组成的,下划线用于替代连字符,并且被去掉APPCOMMAND_前缀。例如APPCOMMAND_BROWSER_BACKWARD被作为一个浏览器后退命令分发。

const {BrowserWindow} = require('electron')
let win = new BrowserWindow()
win.on('app-command', (e, cmd) => {
    // 当用户点鼠标上的后退按钮时窗口会后退导航
    if (cmd === 'browser-backward' && win.webContents.canGoBack()) {
        win.webContents.goBack()
    }
})

<h4 id="event-scroll-touch-begin">事件:‘scroll-touch-begin’ <i>(MacOS)</i></h4>

当滚轮事件开始时被分发。

<h4 id="event-scroll-touch-end">事件:‘scroll-touch-end’ <i>(MacOS)</i></h4>

当滚轮事件结束时被分发。

<h4 id="event-scroll-touch-edge">事件:‘scroll-touch-edge’ <i>(MacOS)</i></h4>

当滚轮事件到达元素边缘的时候被分发。

<h4 id="event-swipe">事件:‘swipe’ <i>(MacOS)</i></h4>

返回值为:

当三个手指滑动时被分发。可能的方向有uprightdownleft

<h3 id="static-methods">静态方法</h3>

BrowserWindow类有下面的这些静态方法:

<h4 id="BrowserWindow-getAllWindows">BrowserWindow.getAllWindows()</h4>

返回值为BrowserWindow[]类型 - 所有打开的浏览器窗口的数组。

<h4 id="BrowserWindow-getFocusedWindow">BrowserWindow.getFocusedWindow()</h4>

返回值为BrowserWindow类型 - 应用中获得焦点的窗口,如果没有则返回null

<h4 id="BrowserWindow-fromWebContents">BrowserWindow.fromWebContents(webContents)</h4>

返回值为BrowserWindow - 通过给定的webContents返回指定的窗口。

<h4 id="BrowserWindow-fromId">BrowserWindow.fromId(id)</h4>

返回值为BrowserWindow类型 - 通过给定的id返回指定的窗口。

<h4 id="BrowserWindow-addDevToolsExtension">BrowserWindow.addDevToolsExtension(path)</h4>

添加位于路径中的开发工具扩展,并且返回扩展的名字。

扩展将会被记录,所以你只需要调用这个接口一次就可以了。如果你尝试添加一个已经被加载的扩展,这个方法将没有任何返回,而是在控制台中输出一个警告。

如果这个扩展的证书丢失或者缺失,这个方法也不会返回任何值。

注意:这个接口不会在app模块中的ready事件被分发之前被调用。

<h4 id="BrowserWindow-removeDevToolsExtension">BrowserWindow.removeDevToolsExtension(name)</h4>

通过名字移除一个开发工具扩展。

注意:这个接口不会在app模块中的ready事件被分发之前被调用。

<h4 id="BrowserWindow-getDevToolsExtensions">BrowserWindow.getDevToolsExtensions()</h4>

返回值为Object类型 - 键是扩展的名称,对应的每一个值都是一个包含了nameversion属性的对象。

你可以运行下面的代码来检查开发工具扩展是否被安装:

const {BrowserWindow} = require('electron')

let installed = BrowserWindow.getDevToolsExtensions().hasOwnProperty('devtron')
console.log(installed)

注意:这个接口不会在app模块中的ready事件被分发之前被调用。

<h3 id="instance-properties">实例的属性</h3>

通过new BrowserWindow创建的对象具有下面的属性:

const {BrowserWindow} = require('electron')
// 在这个例子中“win”是我们的实例
let win = new BrowserWindow({width: 800, height: 600})
win.loadURL('https://github.com')

<h4 id="win-webContents">win.webContents</h4>

窗口拥有的一个WebContents对象。所有与网页有关的事件和操作都会通过它来完成。

查看webContents documentation来了解它的方法和事件。

<h4 id="win-id">win.id</h4>

一个Integer类型的代表着窗口的唯一ID。

<h3 id="instance-methods">实例的方法</h3>

通过new BrowserWindow创建的对象具有下面的方法:

注意:一些方法只在特定的操作系统中有效,已经被标记出来。

<h4 id="win-destroy">win.destroy()</h4>

强制关闭窗口,网页的unloadbeforeunload事件将不会被分发,窗口的close事件也不会被分发,但是它保证closed事件会被分发。

<h4 id="win-close">win.close()</h4>

尝试关闭窗口。这个和用户手动点击窗口的关闭按钮是一样的效果。网页可能会取消关闭。请查看close事件

<h4 id="win-focus">win.focus()</h4>

窗口获得焦点。

<h4 id="win-blur">win.blur()</h4>

窗口移除焦点。

<h4 id="win-isFocused">win.isFocused()</h4>

返回值为Boolean类型 - 窗口是否获得焦点。

<h4 id="win-isDestroyed">win.isDestroyed()</h4>

返回值为Boolean类型 - 窗口是否被销毁。

<h4 id="win-show">win.show()</h4>

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

<h4 id="win-showInactive">win.showInactive()</h4>

展示窗口但不给窗口焦点。

<h4 id="win-hide">win.hide()</h4>

隐藏窗口。

<h4 id="win-isVisible">win.isVisible()</h4>

返回值为Boolean类型 - 当前窗口对于用户是否是可见的。

<h4 id="win-isModal">win.isModal()</h4>

返回值为Boolean类型 - 当前窗口是否是一个模态窗口。

<h4 id="win-maximize">win.maximize()</h4>

最大化窗口。

<h4 id="win-unmaximize">win.unmaximize()</h4>

取消最大化窗口。

<h4 id="win-isMaximized">win.isMaximized()</h4>

返回值为Boolean类型 - 窗口是否最大化。

<h4 id="win-minimize">win.minimize()</h4>

最小化窗口。在一些平台上,最小化的窗口将会被展示在dock上。

<h4 id="win-restore">win.restore()</h4>

将最小化的窗口恢复到以前的状态。

<h4 id="win-isMinimized">win.isMinimized()</h4>

返回值为Boolean类型 - 窗口是否最小化。

<h4 id="win-setFullScreen">win.setFullScreen(flag)</h4>

设置窗口是否进入全屏模式。

<h4 id="win-isFullScreen">win.isFullScreen()</h4>

返回值为Boolean类型 - 窗口是否在全屏模式下。

<h4 id="win-setAspectRatio">win.setAspectRatio (aspectRatio[, extraSize]) <i>(MacOS)</i></h4>

这将使窗口保持一个纵横比。使用像素设置的额外尺寸将允许一个开发者有不包含在纵横比计算之内的空间。这个接口已经考虑到了不同窗口之间的大小和窗口的内容的大小。

考虑到一个HD视频播放器和相关控件的一般窗口。可能在左边框会有15像素的控件,有边框有25像素控件,播放器下方还会有50像素的控件。为了在播放器内保持它自己的16:9的纵横比(1920x1080HD的标准纵横比),我们需要调用这个方法,并传入参数16/9[40,50]。第二个参数不关心额外的宽度和高度在内容视图的什么位置——只关心是否存在。只会在整个内容视图中计算你要的额外的宽高就。

<h4 id="win-previewFile">win.win.previewFile(path[, displayName]) <i>(MacOS)</i></h4>

使用Quick Look 查看给定路径的文件。

<h4 id="win-closeFilePreview">win.closeFilePreview() <i>(MacOS)</i></h4>

关闭当前打开的Quick Look面板

<h4 id="win-setBounds">win.setBounds(bounds[, animate])</h4>

调整大小和移动窗口的界限。

<h4 id="win-getBounds">win.getBounds()</h4>

返回值为Rectangle类型。

<h4 id="win-setContentBounds">win.setContentBounds(bounds[, animate])</h4>

调整大小和移动窗口的客户端区域(例如网页)的范围。

<h4 id="win-getContentBounds">win.getContentBounds()</h4>

返回值为Rectangle类型。

<h4 id="win-setSize">win.setSize(width, height[, animate])</h4>

调整窗口大小的widthheight

<h4 id="win-getSize">win.getSize()</h4>

返回值为Integer[]类型 - 包含窗口的宽度和高度。

<h4 id="win-setContentSize">win.setContentSize(width, height[, animate]</h4>

调整窗口客户端区域大小的widthheight

<h4 id="win-getContentSize">win.getContentSize()</h4>

返回值为Integer[]类型 - 包含窗口客户端区域的宽度和高度。

<h4 id="win-setMinimumSize">win.setMinimumSize(width, height)</h4>

设置窗口的widthheight的最小尺寸。

<h4 id="win-getMinimumSize">win.getMinimumSize()</h4>

返回值为Integer[]类型 - 包含窗口的宽高的最小尺寸。

<h4 id="win-setMaximumSize">win.setMaximumSize(width, height)</h4>

设置窗口的widthheight的最大尺寸。

<h4 id="win-getMaximumSize">win.getMaximumSize()</h4>

返回值为Integer[]类型 - 包含窗口的宽高的最大尺寸。

<h4 id="win-setResizable">win.setResizable(resizable)</h4>

设置窗口是否允许用户手动调整大小。

<h4 id="win-isResizable">win.isResizable()</h4>

返回值为Boolean类型 - 是否允许用户手动调整窗口的大小。

<h4 id="win-setMovable">win.setMovable(movable) <i>(MacOS,Windows)</i></h4>

设置是否允许用户移动窗口。Linux下是无效的。

<h4 id="win-isMovable">win.isMovable() <i>(MacOS,Windows)</i></h4>

返回值为Boolean类型 - 是否允许用户移动窗口。

Linux下是总会返回true

<h4 id="win-setMinimizable">win.setMinimizable(minimizable) <i>(MacOS,Windows)</i></h4>

设置是否允许用户手动最小化窗口。Linux下是无效的。

<h4 id="win-isMinimizable">win.isMinimizable() <i>(MacOS,Windows)</i></h4>

返回值为Boolean类型 - 是否允许用户手动最小化窗口。

Linux下是总会返回true

<h4 id="win-setMaximizable">win.setMaximizable(maximizable) <i>(MacOS,Windows)</i></h4>

设置是否允许用户手动最大化窗口。Linux下是无效的。

<h4 id="win-isMaximizable">win.isMaximizable() <i>(MacOS,Windows)</i></h4>

返回值为Boolean类型 - 是否允许用户手动最大化窗口。

Linux下是总会返回true

<h4 id="win-setFullScreenable">win.setFullScreenable(fullscreenable)</h4>

设置是否允许最大化/缩放窗口按钮切换全屏模式或最大化窗口。

<h4 id="win-isFullScreenable">win.isFullScreenable()</h4>

返回值为Boolean类型 - 是否允许最大化/缩放窗口按钮切换全屏模式或最大化窗口。

<h4 id="win-setClosable">win.setClosable(closable) <i>(MacOS,Windows)</i></h4>

设置是否允许用户手动关闭窗口。Linux下是无效的。

<h4 id="win-isClosable">win.isClosable() <i>(MacOS,Windows)</i></h4>

返回值为Boolean类型 - 是否允许用户手动关闭窗口。

Linux下是总会返回true

<h4 id="win-setAlwaysOnTop">win.setAlwaysOnTop(flag[, level][, relativeLevel])</h4>

设置窗口是否需要总是显示在其他窗口的上面。设置之后,窗口仍然是一个正常的窗口,而不是一个不能被聚焦的工具窗口。

<h4 id="win-isAlwaysOnTop">win.isAlwaysOnTop()</h4>

返回值为Boolean类型 - 窗口是否总是在其他窗口的上面。

<h4 id="win-center">win.center()</h4>

移动窗口到屏幕中间。

<h4 id="win-setPosition">win.setPosition(x, y[, animate])</h4>

移动窗口到xy的位置。

<h4 id="win-getPosition">win.getPosition()</h4>

返回值为Integer[]类型 - 包含窗口的当前位置。

<h4 id="win-setTitle">win.setTitle(title)</h4>

使用title改变原生窗口的标题。

<h4 id="win-getTitle">win.getTitle()</h4>

返回值为String类型 - 原生窗口的标题。

注意:网页的标题可能和原生窗口的标题不同。

<h4 id="win-setSheetOffset">win.setSheetOffset(offsetY[, offsetX]) <i>(MacOS)</i></h4>

MacOS上改变表单的依附点。默认情况下,表单只依附在窗口边框下,但是你可能想要在一个HTML渲染工具栏下展示它们。例如:

const {BrowserWindow} = require('electron')
let win = new BrowserWindow()

let toolbarRect = document.getElementById('toolbar').getBoundingClientRect()
win.setSheetOffset(toolbarRect.height)

<h4 id="win-flashFrame">win.flashFrame(flag)</h4>

开始或停止闪动窗口来吸引用户注意力。

<h4 id="win-setSkipTaskbar">win.setSkipTaskbar(skip)</h4>

使窗口不在任务栏中显示。

<h4 id="win-setKiosk">win.setKiosk(flag)</h4>

进入或者离开kiosk模式。

<h4 id="win-isKiosk">win.isKiosk()</h4>

返回值为Boolean类型 - 窗口是否在kiosk模式下。

<h4 id="win-getNativeWindowHandle">win.getNativeWindowHandle()</h4>

返回值为Buffer类型 - The platform-specific handle of the window.

原生操作类型在Windows下是HWND,在MacOS下是NSView*,在Linux下是Windowunsigned long)。

<h4 id="win-hookWindowMessage">win.hookWindowMessage(message, callback) <i>(Windows)</i></h4>

联播一个窗口信息。当消息在WndProc被收到时会调用callback

<h4 id="win-isWindowMessageHooked">win.isWindowMessageHooked(message) <i>(Windows)</i></h4>

返回值为Boolean类型 - true还是false取决于消息是否被联播。

<h4 id="win-unhookWindowMessage">win.unhookWindowMessage(message) <i>(Windows)</i></h4>

取消联播窗口的消息。

<h4 id="win-unhookAllWindowMessages">win.unhookAllWindowMessages() <i>(Windows)</i></h4>

取消联播窗口的所有消息。

<h4 id="win-setRepresentedFilename">win.setRepresentedFilename(filename) <i>(macOS)</i></h4>

设置代表窗口的文件的路径名以及文件的图标,文件将会被展示在窗口的标题栏。

<h4 id="win-getRepresentedFilename">win.getRepresentedFilename() <i>(macOS)</i></h4>

返回值为String - 代表窗口的文件的路径名。

<h4 id="win-setDocumentEdited">win.setDocumentEdited(edited) <i>(macOS)</i></h4>

指定窗口的文档是否已经被编辑,如果设置为true那么标题栏上的图标将会变成灰色。

<h4 id="win-isDocumentEdited">win.isDocumentEdited() <i>(macOS)</i></h4>

返回值为Boolean类型 - 窗口的文件是否被编辑。

<h4 id="win-focusOnWebView">win.focusOnWebView()</h4>
<h4 id="win-blurWebView">win.blurWebView()</h4>
<h4 id="win-capturePage">win.capturePage([rect, ]callback)</h4>

webContents.capturePage([rect, ]callback)一样。

<h4 id="win-loadURL">win.loadURL(url[, options])</h4>

webContents.loadURL(url[, options])一样。

url可以是一个远程地址(例如http://)也可以是一个使用file://协议的本地的HTML文件路径。

请确保文件地址是正确的,推荐使用Node的url.format方法:

let url = require('url').format({
    protocol: 'file',
    slashes: true,
    pathname: require('path').join(__dirname, 'index.html')
})

win.loadURL(url)

你可以像下面那样使用一个URL编码方式的POST请求加载一个URL:

win.loadURL('http://localhost:8000/post', {
    postData: [{
        type: 'rawData',
        bytes: Buffer.from('hello=world')
    }],
    extraHeaders: 'Content-Type: application/x-www-form-urlencoded'
})

<h4 id="win-reload">win.reload()</h4>

webContents.reload一样。

<h4 id="win-setMenu">win.setMenu(menu) <i>(Linux,Windows)</i></h4>

设置menu作为窗口的菜单栏,设置它为null则将会移除菜单栏。

<h4 id="win-setProgressBar">win.setProgressBar(progress[, options])</h4>

为进度条设置进度值。值的范围是[0-1.0]。

当进度 < 0则移除进度条;当进度 > 1时变为不确定模式。

Linux平台中,只支持Unity桌面环境,你需要在package.json文件中的desktopName中指定*.desktop文件名字。默认情况下,它假设为app.getName().desktop的值。

Windows中,一个模式可以被忽略。接受的值为nonenormalindeterminateerrorpaused。如果你没有设置一个模式(没有一个值在有效范围内)就调用setProgressBar,值将会假设为normal

<h4 id="win-setOverlayIcon">win.setOverlayIcon(overlay, description) <i>(Windows)</i></h4>

设置一个16 x 16像素的覆盖物到当前任务栏图标上,通常被用来传达某种应用状态或者被动的通知用户。

<h4 id="win-setHasShadow">win.setHasShadow(hasShadow) <i>(MacOS)</i></h4>

设置窗口是否因该有一个阴影。Windows和Linux下无效。

<h4 id="win-hasShadow">win.hasShadow() <i>(MacOS)</i></h4>

返回值为Boolean类型 - 窗口是否有一个阴影。

Windows和Linux下总是返回true

<h4 id="win-setThumbarButtons">win.setThumbarButtons(buttons) <i>(Windows)</i></h4>

返回值为Boolean类型 - 按钮是否被成功的添加。

添加一个带有一些按钮的缩略图工具栏在一个任务栏按钮布局上的窗口的缩略图上。返回一个Boolean对象来表示这个小东西是否被添加成功。

缩略图工具栏上由于有限的空间按钮的数量应该不能超过7个。一旦你设置了缩略图工具栏,由于平台的限制,这个工具栏将不可以被移除。但是你可以调用这个接口传入一个空的数组来清空这些按钮。

buttons是一个Button对象的数组:

flags是一个可以包含下面字符串的数组:

<h4 id="win-setThumbnailClip">win.setThumbnailClip(region) <i>(Windows)</i></h4>

设置当鼠标悬停在任务栏上时,窗口中展示缩略图的区域。你可以通过指定一个空的区域{x: 0, y: 0, width: 0, height: 0}来重新设置整个窗口的缩略图。

<h4 id="win-setThumbnailToolTip">win.setThumbnailToolTip(toolTip) <i>Windows</i></h4>

设置当鼠标悬停在任务栏的缩略图窗口上时展示的提示文字。

<h4 id="win-setAppDetails">win.setAppDetails(options) <i>(Windows)<i></h4>

设置窗口的任务栏按钮的特性。

注意:relaunchCommandrelaunchDisplayName必须被一起设置。如果有一个没有被设置,那么它们都不会被使用。

<h4 id="win-showDefinitionForSelection">win.showDefinitionForSelection() <i>(MacOS)</i></h4>

webContents.showDefinitionForSelection()一样。

<h4 id="win-setIcon">win.setIcon(icon) <i>(Windows,Linux)</i></h4>

改变窗口的图标。

<h4 id="win-setAutoHideMenuBar">win.setAutoHideMenuBar(hide)</h4>

设置窗口的菜单栏是否自动隐藏。一旦设置,菜单栏将只会在用户按下Alt键时展示。

如果菜单栏已经是可见的,调用setAutoHideMenuBar(true)将不会被立刻隐藏。

<h4 id="win-isMenuBarVisible">win.isMenuBarVisible()</h4>

返回值为Boolean类型 - 菜单栏是否是可见的。

<h4 id="win-setVisibleOnAllWorkspaces">win.setVisibleOnAllWorkspaces(visible)</h4>

设置窗口在所有工作空间是否可见。

注意:这个接口将不会在Windows下工作。

<h4 id="win-isVisibleOnAllWorkspaces">win.isVisibleOnAllWorkspaces()</h4>

返回值为Boolean类型 - 窗口是否在所有工作空间是否可见。

注意:这个接口将不会在Windows下工作。

<h4 id="win-setIgnoreMouseEvents">win.setIgnoreMouseEvents(ignore)</h4>

使窗口忽略所有鼠标事件。

所有在这个窗口中发生的鼠标事件都会被转移到这个窗口的下面窗口中,但是如果这个窗口获得焦点,它仍然会接收键盘事件。

<h4 id="win-setContentProtection">win.setContentProtection(enable) <i>(MacOS,Windows)</i></h4>

防止窗口的内容被其他的应用捕获。

MacOS中它会设置NSWindowsharingTypeNSWindowSharingNone。Windows中它会调用SetWindowDisplayAffinity传入WDA_MONITOR

<h4 id="win-setFocusable">win.setFocusable(focusable) <i>(Windows)</i></h4>

改变窗口是否可以被聚焦。

<h4 id="win-setParentWindow">win.setParentWindow(parent) <i>(Linux,MacOS)</i></h4>

设置parent为当前窗口的父窗口,设置null将会使当前窗口放到一个顶级窗口中。

<h4 id="win-getParentWindow">win.getParentWindow()</h4>

返回值为BrowserWindow类型 - 父窗口。

<h4 id="win-getChildWindows">win.getChildWindows()</h4>

返回值为BrowserWindow[]类型 - 所有子窗口。

<h4 id="win-setAutoHideCursor">win.setAutoHideCursor(autoHide) <i>(MacOS)</i></h4>

控制是否在输入时隐藏光标。

<h4 id="win-setVibrancy">win.setVibrancy(type) <i>(MacOS)</i></h4>

给浏览器窗口添加一个震动效果。传入null或者是空字符串将会移除窗口的震动效果。

<h4 id="win-setTouchBar">win.setTouchBar(touchBar) <i>(MacOS)</i></h4>

为当前窗口设置touchBar布局。指定null或者undefined将清除touch bar。这个方法只会在电脑有一个touch bar并且运行MacOS 10.12.1+系统上才会有效果。

上一篇下一篇

猜你喜欢

热点阅读