chrome.app.window

描述 使用 chrome.app.window API 创建窗口。窗口可以有框架,包含标题栏和大小控件,它们不和任何 Chrome 浏览器窗口关联。有关这些选项的演示,请参见 Window State 示例
可用版本 从 Chrome 23 开始支持。

摘要

类型
ContentBounds
BoundsSpecification
Bounds
FrameOptions
CreateWindowOptions
AppWindow
方法
create chrome.app.window.create(string url, CreateWindowOptions options, function callback)
current AppWindow chrome.app.window.current()
getAll array of AppWindow chrome.app.window.getAll()
get AppWindow chrome.app.window.get(string id)
事件
onBoundsChanged
onClosed
onFullscreened
onMaximized
onMinimized
onRestored

类型

ContentBounds

从 Chrome 35 开始支持。

属性
integer (可选)
left
integer (可选)
top
integer (可选)
width
integer (可选)
height

BoundsSpecification

从 Chrome 35 开始支持。

属性
integer (可选)
left

内容或窗口的 X 坐标。

integer (可选)
top

内容或窗口的 Y 坐标。

integer (可选)
width

内容或窗口的宽度。

integer (可选)
height

内容或窗口的高度。

integer (可选)
minWidth

内容或窗口的最小宽度。

integer (可选)
minHeight

内容或窗口的最小高度。

integer (可选)
maxWidth

内容或窗口的最大宽度。

integer (可选)
maxHeight

内容或窗口的最大高度。

Bounds

从 Chrome 25 开始支持。

属性
integer left

该属性可用来获取或设置内容或窗口当前的 X 坐标。

integer top

该属性可用来获取或设置内容或窗口当前的 Y 坐标。

integer width

该属性可用来获取或设置内容或窗口的当前宽度。

integer height

该属性可用来获取或设置内容或窗口的当前高度。

integer (可选)
minWidth

从 Chrome 35 开始支持。

该属性可用来获取或设置内容或窗口当前的最小宽度,null 表示“未指定”。

integer (可选)
minHeight

从 Chrome 35 开始支持。

该属性可用来获取或设置内容或窗口当前的最小高度,null 表示“未指定”。

integer (可选)
maxWidth

从 Chrome 35 开始支持。

该属性可用来获取或设置内容或窗口当前的最大宽度,null 表示“未指定”。

integer (可选)
maxHeight

从 Chrome 35 开始支持。

该属性可用来获取或设置内容或窗口当前的最大高度,null 表示“未指定”。

function setPosition

从 Chrome 35 开始支持。

设置内容或窗口的位置。

参数
integer left
integer top
function setSize

从 Chrome 35 开始支持。

设置内容或窗口的宽度和高度。

参数
integer width
integer height
function setMinimumSize

从 Chrome 35 开始支持。

设置内容或窗口的最小大小约束,最小宽度或高度可以设置为 null 解除约束,undefined 值保持约束不变。

参数
integer minWidth
integer minHeight
function setMaximumSize

从 Chrome 35 开始支持。

设置内容或窗口的最大大小约束,最小宽度或高度可以设置为 null 解除约束,undefined 值保持约束不变。

参数
integer maxWidth
integer maxHeight

FrameOptions

从 Chrome 35 开始支持。

属性
string (可选)
type

边框类型:nonechrome(默认为 chrome)。

如果使用 none,CSS 属性 -webkit-app-region 使应用窗口可以拖放。

-webkit-app-region: drag 用于将区域标记为可拖放,no-drag 用于禁用嵌套元素上的这一样式。

string (可选)
color

允许设置边框颜色,只有边框类型为 chrome 时才能设置边框颜色。

边框颜色在 Chrome 36 中新增。

string (可选)
activeColor

从 Chrome 36 开始支持。

允许设置窗口处于活动状态时的边框颜色,只有当边框类型为 chrome 时才能设置边框颜色。

边框颜色在 Chrome 36 中新增。

string (可选)
inactiveColor

从 Chrome 36 开始支持。

允许设置窗口处于不活动状态时的边框颜色,只有当边框类型为 chrome

时才能设置边框颜色。inactiveColor 必须和 color 同时使用。

边框颜色在 Chrome 36 中新增。

CreateWindowOptions

属性
string (可选)
id

用于标识窗口的标识符,会用来记住窗口的大小与位置,当同一标识符的窗口再次打开时恢复原来的尺寸。如果创建窗口时另一个具有同样标识符的窗口已经存在,当前打开的窗口将获得焦点,而不会创建新窗口。

BoundsSpecification (可选)
innerBounds

从 Chrome 35 开始支持。

用于指定窗口内容(不包括窗口装饰部分)的初始位置、初始大小和约束。如果还指定了 id 并且之前显示过匹配 id 的窗口,则使用记录下来的位置和大小。

注意,窗口内外边框之间的距离由操作系统决定,所以 innerBoundsouterBounds 设置同样的属性值会导致错误。

该属性在 Chrome 36 中新增。

BoundsSpecification (可选)
outerBounds

从 Chrome 35 开始支持。

用于指定窗口(包括窗口装饰部分,如标题栏和边框)的初始位置、初始大小和约束。如果还指定了 id 并且之前显示过匹配 id 的窗口,则使用记录下来的位置和大小。

注意,窗口内外边框之间的距离由操作系统决定,所以 innerBoundsouterBounds 设置同样的属性值会导致错误。

该属性在 Chrome 36 中新增。

integer (可选)
minWidth

从 Chrome 36 开始弃用请使用 innerBounds 或 outerBounds。

窗口的最小宽度。

integer (可选)
minHeight

从 Chrome 36 开始弃用请使用 innerBounds 或 outerBounds。

窗口的最小高度。

integer (可选)
maxWidth

从 Chrome 36 开始弃用请使用 innerBounds 或 outerBounds。

窗口的最大宽度。

integer (可选)
maxHeight

从 Chrome 36 开始弃用请使用 innerBounds 或 outerBounds。

窗口的最大高度。

string or FrameOptions (可选)
frame

框架类型:'none' 或 'chrome'(默认为 'chrome')。如果使用 'none',可以通过 CSS 属性 -webkit-app-region 设置应用窗口的拖放特性。-webkit-app-region: drag 可以将区域标志为可拖放的,而 no-drag 可以用来在嵌套元素上禁用该样式。

在 Chrome 36 或更高版本中可以使用 FrameOptions 对象。

ContentBounds (可选)
bounds

从 Chrome 36 开始弃用请使用 innerBounds 或 outerBounds。

窗口中内容的大小与位置(不包括标题栏)。如果同时指定了 id,并且以前显示过匹配标识符的窗口,则会使用记录下来的窗口大小与位置。

boolean (可选)
alphaEnabled

尚未完全实现,您必须通过源代码建立 Chromium 才能尝试该 API。了解更多内容

启用窗口背景透明,仅在 ash 中支持,需要 app.window.alpha 权限。

enum of "normal", "fullscreen", "maximized", or "minimized" (可选)
state

从 Chrome 28 开始支持。

窗口的初始状态,允许使它在创建时就全屏、最大化或最小化。默认为 'normal'(正常)。

boolean (可选)
hidden

从 Chrome 24 开始支持。

如果为 true,该窗口创建后将处于隐藏状态,创建之后在该窗口上调用 show() 可以显示它。默认为 false。

boolean (可选)
resizable

从 Chrome 27 开始支持。

如果为 true 的话,用户可以调整窗口的大小。默认为 true。

boolean (可选)
singleton

从 Chrome 34 开始弃用不再支持具有相同标志的多个窗口。

默认情况下,如果您指定了窗口的标识符,只有当另一个具有相同标识符的窗口不存在时才会创建。如果另一个具有相同标识符的窗口存在,则它将变为活动窗口。如果您确实需要创建多个相同标识符的窗口,您可以将该属性设置为 false。

boolean (可选)
alwaysOnTop

从 Chrome 32 开始支持。

如果为 true,窗口会保持在其他大部分窗口之上。如果有多个这样的窗口,当前具有焦点的窗口会在前台。需要 "alwaysOnTopWindows" 权限,默认为 false。

创建窗口后调用 setAlwaysOnTop 修改该属性。

boolean (可选)
focused

从 Chrome 33 开始支持。

如果为 true,窗口创建时具有焦点。默认为 true。

AppWindow

属性
function focus

使窗口拥有焦点。

function fullscreen

从 Chrome 28 开始支持。

使窗口进入全屏状态。

用户可以按下 Esc 键恢复窗口。如果应用请求 overrideEscFullscreen 权限,并调用 .preventDefault() 取消事件,就能避免离开全屏状态,如下所示:

window.onKeyDown = function(e) { if (e.keyCode == 27 /* ESC */) { e.preventDefault(); } };

function isFullscreen

从 Chrome 27 开始支持。

窗口是否处于全屏状态。


返回值为 boolean 类型。
function minimize

最小化窗口。

function isMinimized

从 Chrome 25 开始支持。

窗口是否最小化。


返回值为 boolean 类型。
function maximize

最大化窗口。

function isMaximized

从 Chrome 25 开始支持。

窗口是否最大化。


返回值为 boolean 类型。
function restore

从最大化、最小化或全屏状态恢复窗口。

function moveTo

将窗口移到指定位置(lefttop)。

参数
integer left

从 Chrome 25 开始支持。

integer top

从 Chrome 25 开始支持。

function resizeTo

将窗口大小调整为 width × height 像素。

参数
integer width
integer height
function drawAttention

从 Chrome 24 开始支持。

吸引用户注意该窗口。

function clearAttention

从 Chrome 24 开始支持。

取消对窗口的吸引。

function close

从 Chrome 24 开始支持。

关闭窗口。

function show

从 Chrome 24 开始支持。

显示窗口,如果窗口已经可见则什么都不做。如果 focused 设置为 true 或省略则使窗口获得焦点。

参数
boolean (可选)
focused

从 Chrome 34 开始支持。

function hide

从 Chrome 24 开始支持。

隐藏窗口,如果窗口已经可见则什么都不做。

function getBounds

从 Chrome 36 开始弃用请使用 innerBounds 或 outerBounds。

获取窗口内部的大小与位置,以 ContentBounds 对象表示。


返回值为 ContentBounds 类型。
function setBounds

从 Chrome 36 开始弃用请使用 innerBounds 或 outerBounds。

设置窗口内部的大小与位置。

参数
ContentBounds bounds
function isAlwaysOnTop

从 Chrome 32 开始支持。

窗口是否前端显示。


返回值为 boolean 类型。
function setAlwaysOnTop

从 Chrome 32 开始支持。

设置窗口是否应该前端显示。需要 "alwaysOnTopWindows" 权限。

参数
boolean alwaysOnTop
Window contentWindow

已创建子窗口的 JavaScript window 对象。

string id

从 Chrome 33 开始支持。

创建窗口时指定的标识符。

Bounds innerBounds

从 Chrome 35 开始支持。

窗口内容的位置、大小和约束,不包括窗口边框。该属性在 Chrome 36 中新增。

Bounds outerBounds

从 Chrome 35 开始支持。

窗口的位置、大小和约束,包括窗口标题栏和边框。该属性在 Chrome 36 中新增。

方法

create

chrome.app.window.create(string url, CreateWindowOptions options, function callback)

窗口的大小与位置可以以几种不同的方式指定。最简单的选择是什么都不指定,这种情况下会使用默认大小与平台相关的位置。

要设置窗口的位置、大小和约束,您可以使用 innerBoundsouterBounds 属性。innerBounds 不包括窗口的装饰部分,而 outerBounds 包括窗口的标题栏和边框。注意,内界与外界之间的填充部分由操作系统决定,所以同时设置内外界是错误的(例如同时设置 innerBounds.leftouterBounds.left )。

如果要自动记录窗口的位置,您可以为它们提供标识符。如果窗口有标识符,该标识符将在窗口移动或调整大小时用于记录它的大小和位置。以后打开具有同样标识符的窗口时使用记录的大小和位置,而不是指定的大小和位置。如果您需要打开一个具有标识符的窗口,并且使用不同于记录的默认位置,您可以使它创建时隐藏,将它移动到期望的位置,然后显示它。

参数
string url
CreateWindowOptions (可选)
options
function (可选)
callback

在已创建窗口(子窗口)的 load 事件产生前在父窗口中调用,父窗口可以设置子窗口中的字段或函数,以便在 onload 中使用。例如:background.js:

function(createdWindow) { createdWindow.contentWindow.foo = function () { }; };

window.js:

window.onload = function () { foo(); }

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function(AppWindow createdWindow) {...};
AppWindow createdWindow

current

AppWindow chrome.app.window.current()

返回当前脚本上下文(即 JavaScript window 对象)的 AppWindow 对象。这也可以在另一个页面的脚本上下文句柄上调用,例如 otherWindow.chrome.app.window.current()。

getAll

array of AppWindow chrome.app.window.getAll()

从 Chrome 33 开始支持。

获取所有当前创建的应用窗口数组。该方法在 Chrome 33 中新增。

get

AppWindow chrome.app.window.get(string id)

从 Chrome 33 开始支持。

获取指定标识符的 AppWindow 对象,如果没有指定标识符的窗口则返回 null。该方法在 Chrome 33 中新增。

参数
string id

事件

onBoundsChanged

从 Chrome 26 开始支持。

当窗口改变大小时产生。

addListener

chrome.app.window.onBoundsChanged.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function() {...};

onClosed

从 Chrome 26 开始支持。

当窗口关闭时产生。注意,您应该在正在关闭的窗口之外的其他窗口监听该事件,例如在后台网页中。因为窗口关闭并产生该事件时正处于销毁的过程中,并不是所有 API 在窗口的脚本上下文中都能正常工作。

addListener

chrome.app.window.onClosed.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function() {...};

onFullscreened

从 Chrome 27 开始支持。

窗口全屏时产生。

addListener

chrome.app.window.onFullscreened.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function() {...};

onMaximized

从 Chrome 26 开始支持。

当窗口最大化时产生。 Fired when the window is maximized.

addListener

chrome.app.window.onMaximized.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function() {...};

onMinimized

从 Chrome 26 开始支持。

当窗口最小化时产生。

addListener

chrome.app.window.onMinimized.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function() {...};

onRestored

从 Chrome 26 开始支持。

当窗口从最小化或最大化的状态恢复时产生。

addListener

chrome.app.window.onRestored.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function() {...};