Mô tả
Dùng API chrome.windows
để tương tác với các cửa sổ trình duyệt. Bạn có thể sử dụng API này để tạo, sửa đổi và sắp xếp lại các cửa sổ trong trình duyệt.
Quyền
Khi được yêu cầu, windows.Window
sẽ chứa một mảng các đối tượng tabs.Tab
. Bạn phải khai báo quyền "tabs"
trong tệp kê khai nếu cần truy cập vào các thuộc tính url
, pendingUrl
, title
hoặc favIconUrl
của tabs.Tab
. Ví dụ:
{
"name": "My extension",
...
"permissions": ["tabs"],
...
}
Khái niệm và cách sử dụng
Cửa sổ hiện tại
Nhiều hàm trong hệ thống tiện ích lấy đối số windowId
không bắt buộc, theo mặc định là cửa sổ hiện tại.
Cửa sổ hiện tại là cửa sổ chứa mã đang thực thi. Điều quan trọng là bạn phải nhận ra rằng cửa sổ này có thể khác với cửa sổ trên cùng hoặc cửa sổ đang được lấy tiêu điểm.
Ví dụ: giả sử một tiện ích tạo một số thẻ hoặc cửa sổ từ một tệp HTML duy nhất và tệp HTML đó chứa một lệnh gọi đến tabs.query()
. Cửa sổ hiện tại là cửa sổ chứa trang đã thực hiện lệnh gọi, bất kể cửa sổ trên cùng là gì.
Trong trường hợp service worker, giá trị của cửa sổ hiện tại sẽ quay lại cửa sổ đang hoạt động gần đây nhất. Trong một số trường hợp, có thể không có cửa sổ hiện tại cho các trang nền.
Ví dụ
Để dùng thử API này, hãy cài đặt ví dụ về API windows trong kho lưu trữ chrome-extension-samples.

Loại
CreateType
Chỉ định loại cửa sổ trình duyệt cần tạo. "panel" không được dùng nữa và chỉ có sẵn cho các tiện ích hiện có trong danh sách cho phép trên ChromeOS.
Enum
"normal"
Chỉ định cửa sổ là cửa sổ tiêu chuẩn.
"popup"
Chỉ định cửa sổ là cửa sổ bật lên.
"panel"
Chỉ định cửa sổ là một bảng điều khiển.
QueryOptions
Thuộc tính
-
điền sẵn
boolean không bắt buộc
Nếu đúng, đối tượng
windows.Window
sẽ có một thuộc tínhtabs
chứa danh sách các đối tượngtabs.Tab
. Các đối tượngTab
chỉ chứa các thuộc tínhurl
,pendingUrl
,title
vàfavIconUrl
nếu tệp kê khai của tiện ích bao gồm quyền"tabs"
. -
windowTypes
WindowType[] không bắt buộc
Nếu được đặt,
windows.Window
được trả về sẽ được lọc dựa trên loại củawindows.Window
. Nếu bạn không đặt, bộ lọc mặc định sẽ được đặt thành['normal', 'popup']
.
Window
Thuộc tính
-
alwaysOnTop
boolean
Liệu cửa sổ có được đặt ở trên cùng hay không.
-
tập trung
boolean
Liệu cửa sổ hiện có phải là cửa sổ được lấy tiêu điểm hay không.
-
độ cao
number không bắt buộc
Chiều cao của cửa sổ, bao gồm cả khung, tính bằng pixel. Trong một số trường hợp, một cửa sổ có thể không được chỉ định thuộc tính
height
; ví dụ: khi truy vấn các cửa sổ đã đóng từ APIsessions
. -
id
number không bắt buộc
Mã nhận dạng của cửa sổ. Mã cửa sổ là duy nhất trong một phiên trình duyệt. Trong một số trường hợp, một cửa sổ có thể không được chỉ định thuộc tính
ID
; ví dụ: khi truy vấn các cửa sổ bằng APIsessions
, trong trường hợp đó, có thể có mã phiên. -
ẩn danh
boolean
Cửa sổ có ở chế độ ẩn danh hay không.
-
trái
number không bắt buộc
Độ lệch của cửa sổ so với cạnh trái của màn hình, tính bằng pixel. Trong một số trường hợp, một cửa sổ có thể không được chỉ định thuộc tính
left
; ví dụ: khi truy vấn các cửa sổ đã đóng từ APIsessions
. -
sessionId
chuỗi không bắt buộc
Mã phiên dùng để xác định riêng một cửa sổ, lấy từ API
sessions
. -
tiểu bang
WindowState không bắt buộc
Trạng thái của cửa sổ trình duyệt này.
-
thẻ
Tab[] không bắt buộc
Mảng gồm các đối tượng
tabs.Tab
đại diện cho các thẻ hiện tại trong cửa sổ. -
trên cùng
number không bắt buộc
Độ lệch của cửa sổ so với cạnh trên cùng của màn hình, tính bằng pixel. Trong một số trường hợp, một cửa sổ có thể không được chỉ định thuộc tính
top
; ví dụ: khi truy vấn các cửa sổ đã đóng từ APIsessions
. -
loại
WindowType không bắt buộc
Loại cửa sổ trình duyệt này.
-
chiều rộng
number không bắt buộc
Chiều rộng của cửa sổ, bao gồm cả khung, tính bằng pixel. Trong một số trường hợp, một cửa sổ có thể không được chỉ định thuộc tính
width
; ví dụ: khi truy vấn các cửa sổ đã đóng từ APIsessions
.
WindowState
Trạng thái của cửa sổ trình duyệt này. Trong một số trường hợp, một cửa sổ có thể không được chỉ định thuộc tính state
; ví dụ: khi truy vấn các cửa sổ đã đóng từ API sessions
.
Enum
"normal"
Trạng thái cửa sổ bình thường (không thu nhỏ, phóng to hoặc toàn màn hình).
"minimized"
Trạng thái cửa sổ thu nhỏ.
"maximized"
Trạng thái cửa sổ được phóng to tối đa.
"fullscreen"
Trạng thái cửa sổ toàn màn hình.
"locked-fullscreen"
Trạng thái cửa sổ toàn màn hình bị khoá. Người dùng không thể thoát khỏi trạng thái toàn màn hình này và trạng thái này chỉ dành cho các tiện ích có trong danh sách cho phép trên ChromeOS.
WindowType
Loại cửa sổ trình duyệt này. Trong một số trường hợp, một cửa sổ có thể không được chỉ định thuộc tính type
; ví dụ: khi truy vấn các cửa sổ đã đóng từ API sessions
.
Enum
"normal"
Cửa sổ trình duyệt thông thường.
"popup"
Cửa sổ bật lên của trình duyệt.
"panel"
Không dùng nữa trong API này. Một cửa sổ kiểu bảng điều khiển của Ứng dụng Chrome. Tiện ích chỉ có thể nhìn thấy các cửa sổ bảng điều khiển của riêng chúng.
"app"
Không dùng nữa trong API này. Một cửa sổ Ứng dụng Chrome. Tiện ích chỉ có thể thấy các cửa sổ ứng dụng của riêng chúng.
"devtools"
Cửa sổ Công cụ cho nhà phát triển.
Thuộc tính
WINDOW_ID_CURRENT
Giá trị windowId đại diện cho cửa sổ hiện tại.
Giá trị
-2
WINDOW_ID_NONE
Giá trị windowId biểu thị việc không có cửa sổ trình duyệt Chrome.
Giá trị
-1
Phương thức
create()
chrome.windows.create(
createData?: object,
): Promise<Window | undefined>
Tạo (mở) một cửa sổ trình duyệt mới có kích thước, vị trí hoặc URL mặc định (không bắt buộc).
Thông số
-
createData
đối tượng không bắt buộc
-
tập trung
boolean không bắt buộc
Nếu
true
, một cửa sổ đang hoạt động sẽ mở ra. Nếufalse
, thao tác này sẽ mở một cửa sổ không hoạt động. -
độ cao
number không bắt buộc
Chiều cao tính bằng pixel của cửa sổ mới, bao gồm cả khung. Nếu không được chỉ định, chiều cao sẽ mặc định là chiều cao tự nhiên.
-
ẩn danh
boolean không bắt buộc
Có nên mở cửa sổ mới ở chế độ ẩn danh hay không.
-
trái
number không bắt buộc
Số lượng pixel để đặt vị trí cửa sổ mới tính từ cạnh trái của màn hình. Nếu bạn không chỉ định, cửa sổ mới sẽ được bù đắp một cách tự nhiên so với cửa sổ được lấy tiêu điểm gần đây nhất. Giá trị này sẽ bị bỏ qua đối với các bảng.
-
setSelfAsOpener
boolean không bắt buộc
Chrome 64 trở lênNếu
true
, "window.opener" của cửa sổ mới tạo được đặt thành trình gọi và nằm trong cùng một đơn vị ngữ cảnh duyệt web có liên quan với trình gọi. -
tiểu bang
WindowState không bắt buộc
Chrome 44 trở lênTrạng thái ban đầu của cửa sổ. Bạn không thể kết hợp các trạng thái
minimized
,maximized
vàfullscreen
vớileft
,top
,width
hoặcheight
. -
tabId
number không bắt buộc
Mã nhận dạng của thẻ cần thêm vào cửa sổ mới.
-
trên cùng
number không bắt buộc
Số lượng pixel để đặt vị trí cửa sổ mới từ cạnh trên cùng của màn hình. Nếu bạn không chỉ định, cửa sổ mới sẽ được bù đắp một cách tự nhiên so với cửa sổ được lấy tiêu điểm gần đây nhất. Giá trị này sẽ bị bỏ qua đối với các bảng.
-
loại
CreateType không bắt buộc
Chỉ định loại cửa sổ trình duyệt cần tạo.
-
url
string | string[] không bắt buộc
Một URL hoặc mảng URL để mở dưới dạng thẻ trong cửa sổ. URL đủ điều kiện phải có một lược đồ, ví dụ: "http://www.google.com", chứ không phải "www.google.com". Các URL không đủ điều kiện được coi là tương đối trong tiện ích. Mặc định là Trang thẻ mới.
-
chiều rộng
number không bắt buộc
Chiều rộng tính bằng pixel của cửa sổ mới, bao gồm cả khung. Nếu không được chỉ định, giá trị mặc định sẽ là chiều rộng tự nhiên.
-
Giá trị trả về
-
Promise<Window | undefined>
Chrome 88 trở lên
get()
chrome.windows.get(
windowId: number,
queryOptions?: QueryOptions,
): Promise<Window>
Lấy thông tin chi tiết về một cửa sổ.
Thông số
-
windowId
số
-
queryOptions
QueryOptions không bắt buộc
Chrome 88 trở lên
Giá trị trả về
-
Promise<Window>
Chrome 88 trở lên
getAll()
chrome.windows.getAll(
queryOptions?: QueryOptions,
): Promise<Window[]>
Lấy tất cả các cửa sổ.
Thông số
-
queryOptions
QueryOptions không bắt buộc
Chrome 88 trở lên
Giá trị trả về
-
Promise<Window[]>
Chrome 88 trở lên
getCurrent()
chrome.windows.getCurrent(
queryOptions?: QueryOptions,
): Promise<Window>
Lấy cửa sổ hiện tại.
Thông số
-
queryOptions
QueryOptions không bắt buộc
Chrome 88 trở lên
Giá trị trả về
-
Promise<Window>
Chrome 88 trở lên
getLastFocused()
chrome.windows.getLastFocused(
queryOptions?: QueryOptions,
): Promise<Window>
Lấy cửa sổ được lấy tiêu điểm gần đây nhất – thường là cửa sổ "ở trên cùng".
Thông số
-
queryOptions
QueryOptions không bắt buộc
Chrome 88 trở lên
Giá trị trả về
-
Promise<Window>
Chrome 88 trở lên
remove()
chrome.windows.remove(
windowId: number,
): Promise<void>
Xoá (đóng) một cửa sổ và tất cả các thẻ trong cửa sổ đó.
Thông số
-
windowId
số
Giá trị trả về
-
Promise<void>
Chrome 88 trở lên
update()
chrome.windows.update(
windowId: number,
updateInfo: object,
): Promise<Window>
Cập nhật các thuộc tính của một cửa sổ. Chỉ định những thuộc tính cần thay đổi; các thuộc tính không được chỉ định sẽ không thay đổi.
Thông số
-
windowId
số
-
updateInfo
đối tượng
-
drawAttention
boolean không bắt buộc
Nếu
true
, khiến cửa sổ hiển thị theo cách thu hút sự chú ý của người dùng đến cửa sổ mà không thay đổi cửa sổ được lấy tiêu điểm. Hiệu ứng này kéo dài cho đến khi người dùng thay đổi tiêu điểm sang cửa sổ. Tuỳ chọn này không có hiệu lực nếu cửa sổ đã có tiêu điểm. Đặt thànhfalse
để huỷ yêu cầudrawAttention
trước đó. -
tập trung
boolean không bắt buộc
Nếu
true
, sẽ đưa cửa sổ lên trước; không thể kết hợp với trạng thái "thu nhỏ". Nếufalse
, sẽ đưa cửa sổ tiếp theo trong thứ tự z lên trước; không thể kết hợp với trạng thái "toàn màn hình" hoặc "tối đa hoá". -
độ cao
number không bắt buộc
Chiều cao để đổi kích thước cửa sổ, tính bằng pixel. Giá trị này sẽ bị bỏ qua đối với các bảng.
-
trái
number không bắt buộc
Độ lệch từ cạnh trái của màn hình để di chuyển cửa sổ đến vị trí tính bằng pixel. Giá trị này sẽ bị bỏ qua đối với các bảng.
-
tiểu bang
WindowState không bắt buộc
Trạng thái mới của cửa sổ. Bạn không thể kết hợp các trạng thái "thu nhỏ", "phóng to" và "toàn màn hình" với "left", "top", "width" hoặc "height".
-
trên cùng
number không bắt buộc
Độ lệch từ cạnh trên cùng của màn hình để di chuyển cửa sổ đến vị trí tính bằng pixel. Giá trị này sẽ bị bỏ qua đối với các bảng.
-
chiều rộng
number không bắt buộc
Chiều rộng để đổi kích thước cửa sổ, tính bằng pixel. Giá trị này sẽ bị bỏ qua đối với các bảng.
-
Giá trị trả về
-
Promise<Window>
Chrome 88 trở lên
Sự kiện
onBoundsChanged
chrome.windows.onBoundsChanged.addListener(
callback: function,
)
Được kích hoạt khi một cửa sổ đã được đổi kích thước; sự kiện này chỉ được gửi đi khi các ranh giới mới được xác nhận, chứ không phải cho các thay đổi đang diễn ra.
onCreated
chrome.windows.onCreated.addListener(
callback: function,
filters?: object,
)
Được kích hoạt khi một cửa sổ được tạo.
Thông số
-
callback
hàm
Chrome 46 trở lênTham số
callback
có dạng như sau:(window: Window) => void
-
cửa sổ
Thông tin chi tiết về cửa sổ đã tạo.
-
-
bộ lọc
đối tượng không bắt buộc
-
windowTypes
Các điều kiện mà loại cửa sổ đang được tạo phải đáp ứng. Theo mặc định, điều kiện này đáp ứng
['normal', 'popup']
.
-
onFocusChanged
chrome.windows.onFocusChanged.addListener(
callback: function,
filters?: object,
)
Được kích hoạt khi cửa sổ hiện đang được lấy tiêu điểm thay đổi. Trả về chrome.windows.WINDOW_ID_NONE
nếu tất cả các cửa sổ Chrome đều không còn tiêu điểm. Lưu ý: Trên một số trình quản lý cửa sổ Linux, WINDOW_ID_NONE
luôn được gửi ngay trước khi chuyển từ cửa sổ Chrome này sang cửa sổ Chrome khác.
Thông số
-
callback
hàm
Chrome 46 trở lênTham số
callback
có dạng như sau:(windowId: number) => void
-
windowId
số
Mã nhận dạng của cửa sổ mới được lấy làm tiêu điểm.
-
-
bộ lọc
đối tượng không bắt buộc
-
windowTypes
Các điều kiện mà loại cửa sổ bị xoá phải đáp ứng. Theo mặc định, điều kiện này đáp ứng
['normal', 'popup']
.
-
onRemoved
chrome.windows.onRemoved.addListener(
callback: function,
filters?: object,
)
Được kích hoạt khi một cửa sổ bị xoá (đóng).
Thông số
-
callback
hàm
Chrome 46 trở lênTham số
callback
có dạng như sau:(windowId: number) => void
-
windowId
số
Mã nhận dạng của cửa sổ đã bị xoá.
-
-
bộ lọc
đối tượng không bắt buộc
-
windowTypes
Các điều kiện mà loại cửa sổ bị xoá phải đáp ứng. Theo mặc định, điều kiện này đáp ứng
['normal', 'popup']
.
-