คำอธิบาย
ใช้ chrome.windows
API เพื่อโต้ตอบกับหน้าต่างเบราว์เซอร์ คุณใช้ API นี้เพื่อสร้าง แก้ไข และจัดเรียงหน้าต่างในเบราว์เซอร์ใหม่ได้
ไฟล์ Manifest
เมื่อส่งคำขอ windows.Window
จะมีอาร์เรย์ของออบเจ็กต์ tabs.Tab
คุณต้อง
ประกาศสิทธิ์ "tabs"
ในไฟล์ Manifest หากต้องการเข้าถึง url
พร็อพเพอร์ตี้ pendingUrl
, title
หรือ favIconUrl
ของ tabs.Tab
เช่น
{
"name": "My extension",
...
"permissions": ["tabs"],
...
}
หน้าต่างปัจจุบัน
ฟังก์ชันจำนวนมากในระบบส่วนขยายจะใช้อาร์กิวเมนต์ windowId
ที่ไม่บังคับ ซึ่งมีค่าเริ่มต้นเป็น
หน้าต่างปัจจุบัน
หน้าต่างปัจจุบันคือหน้าต่างที่มีรหัสที่กำลังเรียกใช้อยู่ ตอนนี้ คุณต้องตระหนักว่าสิ่งนี้อาจแตกต่างจากหน้าต่างบนสุด หรือหน้าต่างที่โฟกัสอยู่
ตัวอย่างเช่น สมมติว่าส่วนขยายสร้างแท็บหรือหน้าต่างสองสามรายการจากไฟล์ HTML เดียว และฟังก์ชัน
ไฟล์ HTML มีการเรียก tabs.query()
หน้าต่างปัจจุบันคือหน้าต่างที่มีองค์ประกอบ
หน้าเว็บที่เรียก โดยไม่คำนึงถึงหน้าต่างบนสุด
ในกรณีของ Service Worker ค่าของกรอบเวลาปัจจุบันจะย้อนกลับไปเป็นช่วงที่ใช้งานอยู่ล่าสุด ในบางกรณี อาจไม่มีกรอบเวลาปัจจุบันสำหรับหน้าพื้นหลัง
ตัวอย่าง
หากต้องการลองใช้ API นี้ ให้ติดตั้งตัวอย่าง Windows API จาก chrome-extension-samples ที่เก็บได้
ประเภท
CreateType
ระบุประเภทของหน้าต่างเบราว์เซอร์ที่จะสร้าง "แผงควบคุม" เลิกใช้งานแล้วและใช้ได้กับส่วนขยายที่อยู่ในรายการที่อนุญาตซึ่งมีอยู่ใน Chrome OS เท่านั้น
ค่าแจกแจง
"normal"
ระบุหน้าต่างเป็นหน้าต่างมาตรฐาน
"ป๊อปอัป"
ระบุหน้าต่างเป็นหน้าต่างป๊อปอัป
"panel"
ระบุหน้าต่างเป็นแผง
QueryOptions
พร็อพเพอร์ตี้
-
ป้อนข้อมูล
บูลีน ไม่บังคับ
หากจริง ออบเจ็กต์
windows.Window
จะมีพร็อพเพอร์ตี้tabs
ที่มีรายการออบเจ็กต์tabs.Tab
ออบเจ็กต์Tab
มีเฉพาะพร็อพเพอร์ตี้url
,pendingUrl
,title
และfavIconUrl
หากไฟล์ Manifest ของส่วนขยายมีสิทธิ์"tabs"
-
windowTypes
WindowType[] ไม่บังคับ
หากตั้งค่าไว้ ระบบจะกรอง
windows.Window
ที่แสดงผลตามประเภท หากไม่ได้ตั้งค่า ระบบจะตั้งค่าตัวกรองเริ่มต้นเป็น['normal', 'popup']
Window
พร็อพเพอร์ตี้
-
alwaysOnTop
boolean
กําหนดหน้าต่างให้อยู่ด้านบนเสมอหรือไม่
-
มีสมาธิ
boolean
หน้าต่างนี้เป็นหน้าต่างที่โฟกัสอยู่หรือไม่
-
ส่วนสูง
หมายเลข ไม่บังคับ
ความสูงของหน้าต่างรวมถึงเฟรม หน่วยเป็นพิกเซล ในบางกรณี ระบบอาจกำหนดพร็อพเพอร์ตี้
height
ไม่ได้ เช่น เมื่อค้นหากรอบเวลาที่ปิดไปแล้วจากsessions
API -
id
หมายเลข ไม่บังคับ
รหัสของหน้าต่าง รหัสหน้าต่างจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์หนึ่งๆ ในบางกรณี ระบบอาจกำหนดพร็อพเพอร์ตี้
ID
ไม่ได้ เช่น เมื่อค้นหาหน้าต่างโดยใช้ API ของsessions
ซึ่งในกรณีนี้อาจมีรหัสเซสชันอยู่ -
ไม่ระบุตัวตน
boolean
ดูว่าหน้าต่างอยู่ในโหมดไม่ระบุตัวตนหรือไม่
-
ซ้าย
หมายเลข ไม่บังคับ
ระยะห่างของหน้าต่างจากขอบด้านซ้ายของหน้าจอในหน่วยพิกเซล ในบางกรณี ระบบอาจกำหนดพร็อพเพอร์ตี้
left
ไม่ได้ เช่น เมื่อค้นหากรอบเวลาที่ปิดไปแล้วจากsessions
API -
sessionId
string ไม่บังคับ
รหัสเซสชันที่ใช้เพื่อระบุหน้าต่างแบบไม่ซ้ำซึ่งได้จาก
sessions
API -
รัฐ
WindowState ไม่บังคับ
สถานะของหน้าต่างเบราว์เซอร์นี้
-
แท็บ
Tab[] ไม่บังคับ
อาร์เรย์ของออบเจ็กต์
tabs.Tab
ที่แสดงแท็บปัจจุบันในหน้าต่าง -
ด้านบน
หมายเลข ไม่บังคับ
ระยะห่างของหน้าต่างจากขอบด้านบนของหน้าจอในหน่วยพิกเซล ในบางกรณี ระบบอาจกำหนดพร็อพเพอร์ตี้
top
ไม่ได้ เช่น เมื่อค้นหากรอบเวลาที่ปิดไปแล้วจากsessions
API -
ประเภท
WindowType ไม่บังคับ
ประเภทของหน้าต่างเบราว์เซอร์ที่เป็นอยู่
-
ความกว้าง
หมายเลข ไม่บังคับ
ความกว้างของหน้าต่างรวมถึงเฟรม หน่วยเป็นพิกเซล ในบางกรณี ระบบอาจกำหนดพร็อพเพอร์ตี้
width
ไม่ได้ เช่น เมื่อค้นหากรอบเวลาที่ปิดไปแล้วจากsessions
API
WindowState
สถานะของหน้าต่างเบราว์เซอร์นี้ ในบางกรณี ระบบอาจกำหนดพร็อพเพอร์ตี้ state
ไม่ได้ เช่น เมื่อค้นหากรอบเวลาที่ปิดไปแล้วจาก sessions
API
ค่าแจกแจง
"normal"
สถานะหน้าต่างปกติ (ไม่ย่อ ขยายใหญ่สุด หรือเต็มหน้าจอ)
"ย่อเล็กสุด"
สถานะหน้าต่างย่อเล็กสุด
"ขยายใหญ่สุด"
สถานะหน้าต่างสูงสุด
"เต็มหน้าจอ"
สถานะหน้าต่างแบบเต็มหน้าจอ
"ล็อก-เต็มหน้าจอ"
สถานะหน้าต่างเต็มหน้าจอล็อกอยู่ การดำเนินการของผู้ใช้ออกจากสถานะเต็มหน้าจอนี้ไม่ได้ และจะใช้ได้กับส่วนขยายจากรายการที่อนุญาตใน Chrome OS เท่านั้น
WindowType
ประเภทของหน้าต่างเบราว์เซอร์ที่เป็นอยู่ ในบางกรณี ระบบอาจกำหนดพร็อพเพอร์ตี้ type
ไม่ได้ เช่น เมื่อค้นหากรอบเวลาที่ปิดไปแล้วจาก sessions
API
ค่าแจกแจง
"normal"
หน้าต่างเบราว์เซอร์ปกติ
"ป๊อปอัป"
ป๊อปอัปของเบราว์เซอร์
"panel"
เลิกใช้งานแล้วใน API นี้ หน้าต่างรูปแบบแผงของแอป Chrome ส่วนขยายจะดูได้เฉพาะหน้าต่างแผงของตัวเอง
"app"
เลิกใช้งานแล้วใน API นี้ หน้าต่างแอป Chrome ส่วนขยายจะดูได้เฉพาะหน้าต่างของแอปนั้นๆ
"devtools"
หน้าต่างเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์
พร็อพเพอร์ตี้
WINDOW_ID_CURRENT
ค่า windowId ที่แสดงหน้าต่างปัจจุบัน
ค่า
-2
WINDOW_ID_NONE
ค่า windowId ที่แสดงถึงการไม่มีหน้าต่างเบราว์เซอร์ Chrome
ค่า
-1
เมธอด
create()
chrome.windows.create(
createData?: object,
callback?: function,
)
สร้าง (เปิด) หน้าต่างเบราว์เซอร์ใหม่ซึ่งระบุขนาด ตำแหน่ง หรือ URL เริ่มต้นซึ่งไม่บังคับ
พารามิเตอร์
-
createData
ออบเจ็กต์ไม่บังคับ
-
มีสมาธิ
บูลีน ไม่บังคับ
หากเป็น
true
จะเปิดหน้าต่างที่ใช้งานอยู่ หากเป็นfalse
จะเปิดหน้าต่างที่ไม่ได้ใช้งาน -
ส่วนสูง
หมายเลข ไม่บังคับ
ความสูงเป็นพิกเซลของหน้าต่างใหม่รวมถึงเฟรม หากไม่ได้ระบุไว้ จะมีค่าเริ่มต้นเป็นความสูงปกติ
-
ไม่ระบุตัวตน
บูลีน ไม่บังคับ
หน้าต่างใหม่ควรเป็นหน้าต่างที่ไม่ระบุตัวตนไหม
-
ซ้าย
หมายเลข ไม่บังคับ
จำนวนพิกเซลในการวางตำแหน่งของหน้าต่างใหม่จากขอบด้านซ้ายของหน้าจอ หากไม่ได้ระบุ หน้าต่างใหม่จะมีการชดเชยตามปกติจากหน้าต่างสุดท้ายที่โฟกัส ระบบจะละเว้นค่านี้สำหรับแผง
-
setSelfAsOpener
บูลีน ไม่บังคับ
Chrome 64 ขึ้นไปหากเป็น
true
"window.opener" ของหน้าต่างที่สร้างใหม่ ได้รับการตั้งค่าให้กับผู้โทรและอยู่ในหน่วยของบริบทการท่องเว็บที่เกี่ยวข้องเดียวกันกับผู้โทร -
รัฐ
WindowState ไม่บังคับ
Chrome 44 ขึ้นไปสถานะเริ่มต้นของหน้าต่าง ไม่สามารถรวมสถานะ
minimized
,maximized
และfullscreen
กับleft
,top
,width
หรือheight
-
tabId
หมายเลข ไม่บังคับ
รหัสของแท็บที่จะเพิ่มในหน้าต่างใหม่
-
ด้านบน
หมายเลข ไม่บังคับ
จำนวนพิกเซลในการวางตำแหน่งของหน้าต่างใหม่จากขอบด้านบนของหน้าจอ หากไม่ได้ระบุ หน้าต่างใหม่จะมีการชดเชยตามปกติจากหน้าต่างสุดท้ายที่โฟกัส ระบบจะละเว้นค่านี้สำหรับแผง
-
ประเภท
CreateType ไม่บังคับ
ระบุประเภทของหน้าต่างเบราว์เซอร์ที่จะสร้าง
-
URL
string | string[] ไม่บังคับ
URL หรืออาร์เรย์ของ URL ที่จะเปิดเป็นแท็บในหน้าต่าง URL ที่สมบูรณ์ในตัวเองต้องมีรูปแบบ เช่น "http://www.google.com" ไม่ใช่ "www.google.com" URL ที่ไม่ตรงตามข้อกำหนดจะถือว่ามีความเกี่ยวข้องภายในส่วนขยาย ค่าเริ่มต้นจะเป็นหน้าแท็บใหม่
-
ความกว้าง
หมายเลข ไม่บังคับ
ความกว้างเป็นพิกเซลของหน้าต่างใหม่ รวมถึงเฟรม หากไม่ได้ระบุไว้ ระบบจะใช้ความกว้างเริ่มต้นตามปกติ
-
-
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้(window?: Window) => void
-
หน้าต่าง
กรอบเวลา ไม่บังคับ
มีรายละเอียดเกี่ยวกับหน้าต่างที่สร้างขึ้น
-
การคืนสินค้า
-
Promise<Window | ไม่ระบุ>
Chrome เวอร์ชัน 88 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
get()
chrome.windows.get(
windowId: number,
queryOptions?: QueryOptions,
callback?: function,
)
ดูรายละเอียดเกี่ยวกับหน้าต่าง
พารามิเตอร์
-
windowId
ตัวเลข
-
queryOptions
QueryOptions ไม่บังคับ
Chrome เวอร์ชัน 88 ขึ้นไป -
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้(window: Window) => void
-
หน้าต่าง
-
การคืนสินค้า
-
Promise<Window>
Chrome เวอร์ชัน 88 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
getAll()
chrome.windows.getAll(
queryOptions?: QueryOptions,
callback?: function,
)
รับหน้าต่างทั้งหมด
พารามิเตอร์
-
queryOptions
QueryOptions ไม่บังคับ
Chrome เวอร์ชัน 88 ขึ้นไป -
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้(windows: Window[]) => void
-
หน้าต่าง
กรอบเวลา[]
-
การคืนสินค้า
-
Promise<Window[]>
Chrome เวอร์ชัน 88 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
พารามิเตอร์
-
queryOptions
QueryOptions ไม่บังคับ
Chrome เวอร์ชัน 88 ขึ้นไป -
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้(window: Window) => void
-
หน้าต่าง
-
การคืนสินค้า
-
Promise<Window>
Chrome เวอร์ชัน 88 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
getLastFocused()
chrome.windows.getLastFocused(
queryOptions?: QueryOptions,
callback?: function,
)
รับหน้าต่างที่โฟกัสล่าสุด โดยทั่วไปจะเป็นหน้าต่าง "ด้านบน"
พารามิเตอร์
-
queryOptions
QueryOptions ไม่บังคับ
Chrome เวอร์ชัน 88 ขึ้นไป -
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้(window: Window) => void
-
หน้าต่าง
-
การคืนสินค้า
-
Promise<Window>
Chrome เวอร์ชัน 88 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
remove()
chrome.windows.remove(
windowId: number,
callback?: function,
)
นำหน้าต่างและแท็บทั้งหมดที่อยู่ข้างในออก (ปิด)
พารามิเตอร์
-
windowId
ตัวเลข
-
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้() => void
การคืนสินค้า
-
คำมั่นสัญญา<โมฆะ>
Chrome เวอร์ชัน 88 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
update()
chrome.windows.update(
windowId: number,
updateInfo: object,
callback?: function,
)
อัปเดตคุณสมบัติของหน้าต่าง ระบุเฉพาะคุณสมบัติที่จะเปลี่ยน คุณสมบัติที่ไม่ได้ระบุจะไม่มีการเปลี่ยนแปลง
พารามิเตอร์
-
windowId
ตัวเลข
-
updateInfo
ออบเจ็กต์
-
drawAttention
บูลีน ไม่บังคับ
หากเป็น
true
จะทำให้หน้าต่างแสดงในลักษณะที่ดึงดูดความสนใจของผู้ใช้ไปที่หน้าต่างนั้นโดยไม่เปลี่ยนหน้าต่างที่โฟกัส เอฟเฟกต์จะคงอยู่จนกว่าผู้ใช้จะเปลี่ยนโฟกัสไปที่หน้าต่าง ตัวเลือกนี้จะไม่มีผลหากหน้าต่างมีโฟกัสอยู่แล้ว ตั้งค่าเป็นfalse
เพื่อยกเลิกคำขอก่อนหน้าของdrawAttention
-
มีสมาธิ
บูลีน ไม่บังคับ
หากเป็น
true
ให้หน้าต่างปรากฏขึ้นมาด้านหน้า ไม่สามารถรวมกับสถานะ "ต่ำสุด" หากเป็นfalse
ให้นำหน้าต่างถัดไปในลำดับ z มาไว้ด้านหน้า ไม่สามารถใช้ร่วมกับสถานะ "เต็มหน้าจอ" หรือ "ขยายใหญ่สุด" -
ส่วนสูง
หมายเลข ไม่บังคับ
ความสูงที่จะปรับขนาดหน้าต่างให้เป็นพิกเซล ระบบจะละเว้นค่านี้สำหรับแผง
-
ซ้าย
หมายเลข ไม่บังคับ
ระยะห่างจากขอบด้านซ้ายของหน้าจอที่จะย้ายหน้าต่างไป หน่วยเป็นพิกเซล ระบบจะละเว้นค่านี้สำหรับแผง
-
รัฐ
WindowState ไม่บังคับ
สถานะใหม่ของหน้าต่าง "ย่อเล็กสุด" "ขยายใหญ่สุด" และ "เต็มหน้าจอ" ไม่สามารถรวมสถานะกับ "left" "top" "width" หรือ "height"
-
ด้านบน
หมายเลข ไม่บังคับ
ระยะห่างจากขอบด้านบนของหน้าจอสำหรับการย้ายหน้าต่างในหน่วยพิกเซล ระบบจะละเว้นค่านี้สำหรับแผง
-
ความกว้าง
หมายเลข ไม่บังคับ
ความกว้างที่จะปรับขนาดหน้าต่างเป็นพิกเซล ระบบจะละเว้นค่านี้สำหรับแผง
-
-
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้(window: Window) => void
-
หน้าต่าง
-
การคืนสินค้า
-
Promise<Window>
Chrome เวอร์ชัน 88 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
กิจกรรม
onBoundsChanged
chrome.windows.onBoundsChanged.addListener(
callback: function,
)
เริ่มทำงานเมื่อปรับขนาดหน้าต่าง เหตุการณ์นี้จะถูกส่งเมื่อมีการคอมมิตขอบเขตใหม่เท่านั้น และจะไม่ส่งสำหรับการเปลี่ยนแปลงที่อยู่ระหว่างดำเนินการ
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(window: Window) => void
-
หน้าต่าง
-
onCreated
chrome.windows.onCreated.addListener(
callback: function,
filters?: object,
)
เริ่มทำงานเมื่อสร้างหน้าต่าง
พารามิเตอร์
-
Callback
ฟังก์ชัน
Chrome 46 ขึ้นไปพารามิเตอร์
callback
มีลักษณะดังนี้(window: Window) => void
-
หน้าต่าง
รายละเอียดของหน้าต่างที่สร้าง
-
-
ตัวกรอง
ออบเจ็กต์ไม่บังคับ
-
windowTypes
เงื่อนไขที่ประเภทหน้าต่างที่สร้างต้องเป็นไปตามเงื่อนไข ซึ่งโดยค่าเริ่มต้นจะเป็นไปตาม
['normal', 'popup']
-
onFocusChanged
chrome.windows.onFocusChanged.addListener(
callback: function,
filters?: object,
)
เริ่มทำงานเมื่อมีการเปลี่ยนแปลงหน้าต่างที่โฟกัสอยู่ในปัจจุบัน แสดงผล chrome.windows.WINDOW_ID_NONE
หากหน้าต่าง Chrome ทั้งหมดหายไปโฟกัส หมายเหตุ: ในเครื่องมือจัดการหน้าต่าง Linux บางราย ระบบจะส่ง WINDOW_ID_NONE
ก่อนการเปลี่ยนจากหน้าต่าง Chrome หนึ่งไปยังอีกหน้าต่างหนึ่งเสมอ
พารามิเตอร์
-
Callback
ฟังก์ชัน
Chrome 46 ขึ้นไปพารามิเตอร์
callback
มีลักษณะดังนี้(windowId: number) => void
-
windowId
ตัวเลข
รหัสของหน้าต่างที่โฟกัสใหม่
-
-
ตัวกรอง
ออบเจ็กต์ไม่บังคับ
-
windowTypes
เงื่อนไขที่ประเภทของหน้าต่างที่จะนำออกต้องเป็นไปตามเงื่อนไข ซึ่งโดยค่าเริ่มต้นจะเป็นไปตาม
['normal', 'popup']
-
onRemoved
chrome.windows.onRemoved.addListener(
callback: function,
filters?: object,
)
เริ่มทำงานเมื่อมีการนำหน้าต่างออก (ปิด)
พารามิเตอร์
-
Callback
ฟังก์ชัน
Chrome 46 ขึ้นไปพารามิเตอร์
callback
มีลักษณะดังนี้(windowId: number) => void
-
windowId
ตัวเลข
รหัสของหน้าต่างที่นำออก
-
-
ตัวกรอง
ออบเจ็กต์ไม่บังคับ
-
windowTypes
เงื่อนไขที่ประเภทของหน้าต่างที่จะนำออกต้องเป็นไปตามเงื่อนไข ซึ่งโดยค่าเริ่มต้นจะเป็นไปตาม
['normal', 'popup']
-