窗口
- 窗口
- 概述
- Window.get([window_object])
- Window.getAll(callback)
- Window.open(url, [options], [callback])
- win.window
- win.x
- win.y
- win.width
- win.height
- win.title
- win.menu
- win.isAlwaysOnTop
- win.isFullscreen
- win.isTransparent
- win.isKioskMode
- win.zoomLevel
- win.cookies.*
- win.moveTo(x, y)
- win.moveBy(x, y)
- win.resizeTo(width, height)
- win.setInnerWidth(width)
- win.setInnerHeight(height)
- win.resizeBy(width, height)
- win.focus()
- win.blur()
- win.show([is_show])
- win.hide()
- win.close([force])
- win.reload()
- win.reloadDev()
- win.reloadIgnoringCache()
- win.maximize()
- win.unmaximize()
- win.minimize()
- win.restore()
- win.enterFullscreen()
- win.leaveFullscreen()
- win.toggleFullscreen()
- win.enterKioskMode()
- win.leaveKioskMode()
- win.toggleKioskMode()
- win.setTransparent(transparent)
- win.setShadow(shadow) (Mac)
- win.showDevTools([iframe], [callback])
- win.closeDevTools()
- win.getPrinters(callback)
- win.isDevToolsOpen()
- win.print(options)
- win.setMaximumSize(width, height)
- win.setMinimumSize(width, height)
- win.setResizable(resizable)
- win.setAlwaysOnTop(top)
- win.setVisibleOnAllWorkspaces(visible) (Mac 和 Linux)
- win.canSetVisibleOnAllWorkspaces() (Mac 和 Linux)
- win.setPosition(position)
- win.setShowInTaskbar(show)
- win.requestAttention(attension)
- win.capturePage(callback [, config ])
- win.captureScreenshot(options [, callback])
- win.setProgressBar(progress)
- win.setBadgeLabel(label)
- win.eval(frame, script)
- win.evalNWBin(frame, path)
- win.evalNWBinModule(frame, path, module_path)
- win.removeAllListeners([eventName])
- 事件: close
- 事件: closed
- 事件: loading
- 事件: loaded
- 事件: document-start(frame)
- 事件: document-end(frame)
- 事件: focus
- 事件: blur
- 事件: minimize
- 事件: restore
- 事件: maximize
- 事件: move(x, y)
- 事件: resize(width, height)
- 事件: enter-fullscreen
- 事件: leave-fullscreen
- 事件: zoom
- 事件: capturepagedone
- 事件: devtools-opened(url)
- 事件: devtools-closed
- 事件: new-win-policy (frame, url, policy)
- 事件: navigation (frame, url, policy)
Window
是 DOM 最顶层的 window
对象的包装器。它具有扩展操作,并且可以接收各种窗口事件。
每个 Window
都是 EventEmitter 类的实例,您可以使用 Window.on(...)
来响应原生窗口的事件。
行为变更
自 0.13.0 版本起,Window
有一些变化。请参阅 从 0.12 迁移到 0.13 的迁移说明。
概述
// Get the current window var win = nw.Window.get(); // Listen to the minimize event win.on('minimize', function() { console.log('Window is minimized'); }); // Minimize the window win.minimize(); // Unlisten the minimize event win.removeAllListeners('minimize'); // Create a new window and get it nw.Window.open('https://github.com', {}, function(new_win) { // And listen to new window's focus event new_win.on('focus', function() { console.log('New window is focused'); }); });
Window.get([window_object])
window_object
{DOM Window}
可选 是 DOM 窗口- 返回
{Window}
原生Window
对象
如果未指定 window_object
,则返回当前窗口的 Window
对象,否则返回 window_object
的 Window
对象。
注意
如果 window_object
是 iframe
的,该函数仍将返回最顶层窗口的 Window
对象。
// Get the current window var win = nw.Window.get(); // Get iframe's window var iframeWin = nw.Window.get(iframe.contentWindow); //This will return true console.log(iframeWin === win); // Create a new window and get it nw.Window.open('https://github.com/nwjs/nw.js', {}, function(new_win) { // do something with the newly created window });
Window.getAll(callback)
获取所有窗口,并使用回调函数,该函数的参数是 nw.Window 对象数组。此函数自 0.42.6 版本起支持。
Window.open(url, [options], [callback])
行为变更
该函数的行为自 0.13.0 版本起已更改。请参阅 从 0.12 迁移到 0.13 的迁移说明。
url
{String}
要在打开的窗口中加载的 URLoptions
{Object}
可选 请参阅清单格式中的 窗口子字段。 此外,以下额外字段也可以在 options 中使用。new_instance
{Boolean}
可选 是否在新渲染进程中打开一个新窗口。mixed_context
{Boolean}
可选 如果为 true,则 Node 上下文和 DOM 上下文将在新窗口的进程中合并。 仅在new_instance
为 true 时使用。inject_js_start
{String}
可选 在任何 DOM 构建和任何脚本运行之前注入的脚本。 请参阅 清单格式inject_js_end
{String}
可选 在文档对象加载后、onload 事件触发之前注入的脚本。 请参阅 清单格式id
{String}
可选 用于标识窗口的id
。 这将用于记住窗口的大小和位置,并在以后打开具有相同 id 的窗口时恢复该几何形状。 另请参阅 Chrome 应用文档
callback(win)
{Function}
可选 打开的原生Window
对象的回调
打开一个新窗口并在其中加载 url
。
注意
您应该等待窗口的 loaded
事件,然后再与任何组件进行交互。
焦点
默认情况下,打开的窗口不会获得焦点。 如果希望它默认获得焦点,可以在 options
中将 focus
设置为 true
。
win.window
获取原生窗口的对应 DOM 窗口对象。
win.x
win.y
获取或设置窗口框架到屏幕的左/上偏移量。
win.width
win.height
获取或设置窗口的大小,包括窗口框架。
win.title
获取或设置窗口的标题。
win.menu
获取或设置窗口的菜单栏。 使用类型为 menubar
的菜单设置。 当 win.menu
设置为 null
时,菜单栏将完全从 Windows 和 Linux 中删除,并且菜单栏将在 Mac 上被清除。
请参阅 自定义菜单栏 以了解菜单栏的用法。 另请参阅 菜单 和 菜单项 以了解详细的 API。
win.isAlwaysOnTop
获取窗口是否始终置顶。
win.isFullscreen
获取是否处于全屏模式。
win.isTransparent
获取是否开启透明度。
win.isKioskMode
获取是否处于 Kiosk 模式。
win.zoomLevel
获取或设置页面缩放比例。0
表示正常大小;正值表示放大;负值表示缩小。
win.cookies.*
包含多个用于操作 Cookie 的函数。API 定义与 Chrome 扩展程序 相同。NW.js 支持 get
、getAll
、remove
和 set
方法;onChanged
事件(支持该事件的 addListener
和 removeListener
函数)。
Chrome 扩展程序 API 中与 CookieStore
相关的任何内容都不支持,因为 NW.js 应用中只有一个全局 Cookie 存储。
win.moveTo(x, y)
x
{Integer}
屏幕左侧的偏移量y
{Integer}
屏幕顶部的偏移量
将窗口的左边缘和上边缘移动到指定的坐标。
win.moveBy(x, y)
x
{Integer}
水平偏移量y
{Integer}
垂直偏移量
将窗口相对于其当前坐标移动指定的像素数。
win.resizeTo(width, height)
width
{Integer}
窗口的内部宽度height
{Integer}
窗口的内部高度
将窗口调整为指定的 width
和 height
。
win.setInnerWidth(width)
width
{Integer}
窗口的内部宽度
win.setInnerHeight(height)
height
{Integer}
窗口的内部高度
win.resizeBy(width, height)
width
{Integer}
窗口的偏移宽度height
{Integer}
窗口的偏移高度
按指定量调整窗口大小。
win.focus()
将焦点设置到窗口上。
win.blur()
移走焦点。通常它会将焦点移动到应用程序的其他窗口,因为在某些平台上没有模糊的概念。
win.show([is_show])
is_show
{Boolean}
可选 指定窗口是否应该显示或隐藏。默认设置为true
。
如果窗口未显示,则显示窗口。
show(false)
与 hide()
的效果相同。
焦点
show
在某些平台上不会将焦点设置到窗口上,因此如果需要,您需要调用 focus
。
win.hide()
隐藏窗口。隐藏后,用户将无法找到窗口。
win.close([force])
force
{Boolean}
指定是否强制关闭窗口并绕过close
事件。
关闭当前窗口。您可以通过监听 close
事件来阻止关闭。如果指定了 force
并等于 true
,则会忽略 close
事件。
通常您希望监听 close
事件并执行一些关闭工作,然后执行 close(true)
来真正关闭窗口。
win.on('close', function () { this.hide(); // Pretend to be closed already console.log("We're closing..."); this.close(true); // then close it forcefully }); win.close(); // Would be detected by the above close event. To skip the above close event use win.close(true);
win.reload()
重新加载当前窗口。
win.reloadDev()
从头开始新的渲染器进程,重新加载当前页面。
win.reloadIgnoringCache()
与 reload()
相似,但不使用缓存(也称为“shift-reload”)。
win.maximize()
在 GTK 和 Windows 上最大化窗口,在 Mac OS X 上缩放窗口。
win.unmaximize()
已弃用
此功能自 0.13.0 版本起已弃用。现在已由 restore
事件 替换。请参阅 从 0.12 迁移到 0.13 的迁移说明。
取消最大化窗口,即 maximize()
的反操作。
win.minimize()
在 Windows 上将窗口最小化到任务栏,在 GTK 上将窗口图标化,在 Mac OS X 上将窗口最小化。
win.restore()
在窗口最小化后将窗口恢复到先前状态,即 minimize()
的反操作。它没有命名为 unminimize
,因为 restore
是常用的。
win.enterFullscreen()
使窗口全屏。
注意
此函数与 HTML5 全屏 API 不同,HTML5 全屏 API 可以使页面的一部分全屏,Window.enterFullscreen()
仅使整个窗口全屏。
win.leaveFullscreen()
退出全屏模式。
win.toggleFullscreen()
切换全屏模式。
win.enterKioskMode()
进入 Kiosk 模式。在 Kiosk 模式下,应用程序将全屏显示,并尝试阻止用户离开应用程序,因此您应该记住在应用程序中提供退出 Kiosk 模式的途径。此模式主要用于公共显示器上的演示。
win.leaveKioskMode()
退出 Kiosk 模式。
win.toggleKioskMode()
切换 Kiosk 模式。
win.setTransparent(transparent)
已弃用
此功能自 0.13.0 版本起已弃用。请参阅 从 0.12 迁移到 0.13 的迁移说明。
transparent
{Boolean}
是否将窗口设置为透明
开启/关闭透明度支持。有关更多信息,请参阅 透明窗口。
win.setShadow(shadow) (Mac)
shadow
{Boolean}
窗口是否具有阴影
开启/关闭窗口的原生阴影。对于无边框、透明窗口很有用。
win.showDevTools([iframe], [callback])
注意
此 API 仅在 SDK 构建版本中可用。
行为变更
该函数的行为自 0.13.0 版本起已更改。请参阅 从 0.12 迁移到 0.13 的迁移说明。
iframe
{String}
或{HTMLIFrameElement}
可选 要在其上进行限制的<iframe>
的 ID 或元素。默认情况下,DevTools 将显示在整个窗口中。callback(dev_win)
{Function}
使用 DevTools 窗口的原生窗口的回调。
打开 Devtools 以检查窗口。
可选的 iframe
作为 String
应为窗口中任何 <iframe>
元素的 id
属性的值。它将 DevTools 限制为仅检查 <iframe>
。如果它是一个空字符串,则此功能无效。
可选的 iframe
作为 HTMLIFrameElement
应该是 iframe 对象。它与 id
参数的作用相同。
此函数通过回调返回一个 Window
对象。您可以使用 Window
的任何属性和方法,除了事件。
另请参见 webview 参考,了解如何在 webview 中打开 DevTools 或在 webview 中打开 DevTools。
win.closeDevTools()
注意
此 API 仅在 SDK 构建版本中可用。
关闭开发者工具窗口。
win.getPrinters(callback)
枚举系统中的打印机。回调函数将接收一个包含打印机信息的 JSON 对象数组。JSON 对象的设备名称可以用作 nw.Window.print()
中的参数。
win.isDevToolsOpen()
注意
此 API 仅在 SDK 构建版本中可用。
查询开发者工具窗口的状态。
另请参见 win.showDevTools()
.
win.print(options)
打印窗口中的网页内容,无论是否需要用户交互。options
是一个包含以下字段的 JSON 对象
autoprint
{Boolean}
是否无需用户交互即可打印;可选,默认值为 truesilent
{Boolean}
隐藏闪烁的打印预览对话框;可选,默认值为 falseprinter
{String}
由nw.Window.getPrinters()
返回的打印机的设备名称;打印到 PDF 时无需设置此项pdf_path
{String}
打印到 PDF 时输出 PDF 的路径headerFooterEnabled
{Boolean}
是否启用页眉和页脚landscape
{Boolean}
是否使用横向或纵向mediaSize
{JSON Object}
纸张尺寸规格shouldPrintBackgrounds
{Boolean}
是否打印 CSS 背景marginsType
{Integer}
0 - 默认;1 - 无边距;2 - 最小;3 - 自定义,请参见marginsCustom
。marginsCustom
{JSON Object}
自定义边距设置;单位为点。copies
{Integer}
打印的份数。scaleFactor
{Integer}
缩放比例;100
为默认值。headerString
{String}
用于替换页眉中 URL 的字符串。footerString
{String}
用于替换页脚中 URL 的字符串。
marginsCustom
示例:"marginsCustom":{"marginBottom":54,"marginLeft":70,"marginRight":28,"marginTop":32}
mediaSize
示例:'mediaSize':{'name': 'CUSTOM', 'width_microns': 279400, 'height_microns': 215900, 'custom_display_name':'Letter', 'is_default': true}
注意:如果未传递任何选项,则应调用 win.print({})
。
win.setMaximumSize(width, height)
width
{Integer}
窗口的最大宽度height
{Integer}
窗口的最大高度
设置窗口的最大尺寸。
win.setMinimumSize(width, height)
width
{整数}
窗口的最小宽度height
{整数}
窗口的最小高度
设置窗口的最小尺寸。
win.setResizable(resizable)
resizable
{布尔值}
窗口是否可以调整大小
设置窗口是否可调整大小。
win.setAlwaysOnTop(top)
top
{布尔值}
窗口是否应始终位于最上面
将小部件设置为位于窗口系统中所有其他窗口的顶部。
win.setVisibleOnAllWorkspaces(visible) (Mac 和 Linux)
visible
{布尔值}
窗口是否应在所有工作区中可见
对于支持多个工作区的平台(目前为 Mac OS X 和 Linux),这允许 NW.js 窗口同时在所有工作区中可见。
win.canSetVisibleOnAllWorkspaces() (Mac 和 Linux)
返回一个布尔值,指示平台(目前为 Mac OS X 和 Linux)是否支持 Window API 方法 setVisibleOnAllWorkspace(Boolean)
。
win.setPosition(position)
position
{字符串}
窗口的位置。有三个有效位置:null
或center
或mouse
将窗口移动到指定位置。目前,只有 center
在所有平台上受支持,它会将窗口置于屏幕中央。
win.setShowInTaskbar(show)
show
{布尔值}
是否在任务栏中显示
控制是否在任务栏或停靠栏中显示窗口。另请参见 清单格式 中的 show_in_taskbar
。
win.requestAttention(attension)
attension
{布尔值}
或{整数}
如果是布尔值,则表示请求或取消用户的关注。如果是整数,则表示窗口闪烁的次数。
通过使窗口在任务栏中闪烁来请求用户的关注。
Mac
在 Mac 上,值 < 0 将触发 NSInformationalRequest
,而值 > 0 将触发 NSCriticalRequest
。
win.capturePage(callback [, config ])
callback
{函数}
完成捕获窗口时的回调config
{字符串}
或{对象}
可选 如果是字符串,请参见config.format
以获取有效值。format
{字符串}
可选 用于生成图像的图像格式。它支持两种格式:"png"
和"jpeg"
。如果忽略,则默认为"jpeg"
。datatype
{字符串}
它支持三种类型:"raw"
、"buffer"
和"datauri"
。如果忽略,则默认为"datauri"
。
捕获窗口的可见区域。要捕获整个页面,请参见 win.captureScreenshot
。
raw
或 datauri
"raw"
仅包含 Base64 编码的图像。但 "datauri"
还包含 mime 类型标头,并且可以直接分配给 Image
的 src
以加载图像。
示例用法
// png as base64string win.capturePage(function(base64string){ // do something with the base64string }, { format : 'png', datatype : 'raw'} ); // png as node buffer win.capturePage(function(buffer){ // do something with the buffer }, { format : 'png', datatype : 'buffer'} );
win.captureScreenshot(options [, callback])
当省略 callback
时,将返回一个 Promise,它将使用回调的 data
参数解析。
callback
{Function}
可选 捕获窗口完成后调用的回调函数。它将使用以下参数调用:err
null
表示成功;{String}
表示错误消息,表示失败。data
{String}
base64 编码的图像
options
{Object}
fullSize
{Boolean}
可选 捕获超出可见区域的整个页面。目前,Chromium 捕获的图像高度限制为 16384 像素。format
{String}
可选 用于生成图像的图像格式。它支持两种格式:"png"
和"jpeg"
。"png"
是默认格式。quality
{Integer}
可选 压缩质量,范围为 [0..100](仅限 jpeg)。clip
{Object}
可选 仅捕获给定区域的屏幕截图。该对象的属性为:x
:{Number}
设备无关像素 (dip) 中的 X 偏移量。y
:{Number}
设备无关像素 (dip) 中的 Y 偏移量。width
:{Number}
设备无关像素 (dip) 中的矩形宽度。height
:{Number}
设备无关像素 (dip) 中的矩形高度。scale
:{Number}
页面缩放比例。
捕获窗口。它可以用来捕获超出可见区域的整个页面。
注意
此 API 处于实验阶段,将来可能会发生变化。
示例用法
win.captureScreenshot({fullSize: true}, (err, data) => { if (err) { alert(err.message); return; } var image = new Image(); image.src = 'data:image/jpg;base64,' + data; document.body.appendChild(image); });
win.setProgressBar(progress)
progress
{Float}
有效值在 [0, 1] 之间。设置为负值 (<0) 将删除进度条。
Linux
仅支持 Ubuntu,您需要通过 NW_DESKTOP
环境变量指定应用程序的 .desktop
文件。如果未找到 NW_DESKTOP
环境变量,则默认使用 nw.desktop
。
win.setBadgeLabel(label)
在任务栏或停靠栏中的窗口图标上设置徽章标签。
Linux
此 API 仅在 Ubuntu 上受支持,标签仅限于字符串数字。您还需要为您的应用程序指定 .desktop
文件(请参阅有关 setProgressBar
的说明)。
win.eval(frame, script)
frame
{HTMLIFrameElement}
要在其中执行的框架。如果iframe
为null
,则假定在当前窗口/框架中。script
{String}
要执行的脚本的源代码
在框架中执行一段 JavaScript 代码。
win.evalNWBin(frame, path)
frame
{HTMLIFrameElement}
要在其中执行的框架。如果iframe
为null
,则假定在当前窗口/框架中。path
{String|ArrayBuffer|Buffer}
由nwjc
生成的二进制文件的路径或Buffer
或ArrayBuffer
在框架中加载并执行编译后的二进制文件。请参阅 保护 JavaScript 源代码。
win.evalNWBinModule(frame, path, module_path)
实验性
此 API 在未来版本中可能会发生变化,因为我们正在探索更好的支持此功能的方法。 在此讨论。
frame
{HTMLIFrameElement}
要在其中执行的框架。如果iframe
为null
,则假定在当前窗口/框架中。path
{String|ArrayBuffer|Buffer}
由nwjc
生成的二进制文件的路径或Buffer
或ArrayBuffer
module_path
{String}
与当前文档相关的模块 URL。它将用于 解析模块说明符。
加载并执行框架中模块的编译二进制文件。二进制文件应使用 nwjc --nw-module
编译。以下代码将加载 lib.bin 作为模块,其他模块可以使用类似 import * from './lib.js'
的方式引用它。
nw.Window.get().evalNWBinModule(null, 'lib.bin', 'lib.js');
win.removeAllListeners([eventName])
删除所有监听器,或指定 eventName
的监听器。
事件: close
close
事件是一个特殊事件,它会影响 Window.close()
函数的结果。如果开发者监听窗口的 close
事件,Window.close()
会发出 close
事件而不关闭窗口。
通常,您会在 close
事件的回调中执行一些关闭工作,然后调用 this.close(true)
来真正关闭窗口,这样就不会再次捕获到它。忘记在回调中调用 this.close()
时添加 true
会导致无限循环。
如果关闭工作需要一些时间,用户可能会觉得应用程序退出速度很慢,这是一种糟糕的体验,因此您可以在 close
事件中隐藏窗口,然后再真正关闭它,以提供流畅的用户体验。
有关 close
事件用法的示例代码,请参见 上面的 win.close(true)
。
Mac
在 Mac 上,会将一个参数传递给回调,指示它是通过 ⌘+Q 关闭的。如果为真,它将设置为字符串 quit
,否则为 undefined
。
事件: closed
closed
事件在相应的窗口关闭后发出。通常您无法获得此事件,因为窗口关闭后所有 js 对象都将被释放。但它在另一个窗口中监听窗口的事件时很有用,另一个窗口的对象不会被释放。
// Open a new window. nw.Window.open('popup.html', {}, function (win) { // Release the 'win' object here after the new window is closed. win.on('closed', function () { win = null; }); // Listen to main window's close event nw.Window.get().on('close', function () { // Hide the window to give user the feeling of closing immediately this.hide(); // If the new window is still open then close it. if (win !== null) { win.close(true); } // After closing the new window, close the main window. this.close(true); }); });
事件: loading
当窗口开始重新加载时发出,通常您无法捕获此事件,因为通常它是在您实际设置回调之前发出的。
您唯一可以捕获此事件的情况是,当您刷新窗口并在另一个窗口中监听此事件时。
事件: loaded
当窗口完全加载时发出,此事件的行为与window.onload
相同,但不依赖于DOM。
事件: document-start(frame)
frame
{HTMLIFrameElement}
是 iframe 对象,如果事件是针对窗口,则为null
。
当此窗口或子 iframe 中的文档对象可用时发出,在所有文件加载后,但在 DOM 构造或任何脚本运行之前发出。
它不会在使用 nw.Window.open() 创建的新窗口上触发:该函数的回调将在与该事件相同的点触发。
请参阅 清单格式 中的 inject_js_start
。
事件: document-end(frame)
frame
{HTMLIFrameElement}
是 iframe 对象,如果事件是针对窗口,则为null
。
当此窗口或子 iframe 中的文档对象卸载时发出,但在发出 onunload
事件之前发出。
请参阅 清单格式 中的 inject_js_end
。
事件: focus
当窗口获得焦点时发出。
事件: blur
当窗口失去焦点时发出。
事件: minimize
当窗口最小化时发出。
事件: restore
行为变更
该函数的行为自 0.13.0 版本起已更改。请参阅 从 0.12 迁移到 0.13 的迁移说明。
当窗口从最小化、最大化和全屏状态恢复时发出。
事件: maximize
当窗口最大化时发出。
事件: move(x, y)
窗口移动后发出。回调将调用两个参数:(x, y)
用于窗口左上角的新位置。
事件: resize(width, height)
窗口调整大小后发出。回调将调用两个参数:(width, height)
用于窗口的新大小。
事件: enter-fullscreen
当窗口进入全屏状态时发出。
事件: leave-fullscreen
已弃用
此功能自 0.13.0 版本起已弃用。现在已由 restore
事件 替换。请参阅 从 0.12 迁移到 0.13 的迁移说明。
当窗口退出全屏状态时发出。
事件: zoom
当窗口缩放更改时发出。它有一个参数指示新的缩放级别。有关参数的值定义,请参阅 win.zoom()
方法。
事件: capturepagedone
已弃用
此功能自 0.13.0 起已弃用。请改用 win.capturePage()
的回调。请参阅 从 0.12 迁移到 0.13 的迁移说明。
在调用 capturePage 方法并准备好图像数据后发出。有关参数的值定义,请参阅 win.capturePage()
回调函数。
事件: devtools-opened(url)
已弃用
此功能自 0.13.0 起已弃用。请改用传递给 win.showDevtools
的 callback
。请参阅 从 0.12 迁移到 0.13 的迁移说明。
有关更多详细信息,请参阅 win.showDevTools()
方法。
事件: devtools-closed
在关闭 Devtools 后发出。
有关更多详细信息,请参阅 win.closeDevTools()
方法。
事件: new-win-policy (frame, url, policy)
frame
{HTMLIFrameElement}
是请求来自的子 iframe 的对象,如果来自顶层窗口,则为null
。url
{String}
是请求链接的地址policy
{Object}
是一个包含以下方法的对象ignore()
: 忽略请求,不会发生导航。forceCurrent()
: 强制链接在同一框架中打开forceDownload()
: 强制链接可下载,或由外部程序打开forceNewWindow()
: 强制链接在新窗口中打开forceNewPopup()
: 强制链接在新弹出窗口中打开setNewWindowManifest(m)
: 控制新弹出窗口的选项。对象m
的格式与清单格式中的 窗口子字段 相同。
当从当前窗口或子 iframe 请求新窗口时发出。您可以在回调中调用 policy.*
方法来更改打开新窗口的默认行为。
例如,当用户尝试在新窗口中打开时,您可以在系统浏览器中打开 URL
nw.Window.get().on('new-win-policy', function(frame, url, policy) { // do not open the window policy.ignore(); // and open it in external browser nw.Shell.openExternal(url); });
事件: navigation (frame, url, policy)
frame
{HTMLIFrameElement}
是请求来自的子 iframe 的对象,如果来自顶层窗口,则为null
。url
{String}
是请求链接的地址policy
{Object}
是一个包含以下方法的对象ignore()
: 忽略请求,不会发生导航。
在导航到另一个页面时发出。类似于 new-win-policy
,您可以在回调中调用 policy.ignore()
来忽略导航。