ตอนนี้ Chrome 116 พร้อมให้บริการในเวอร์ชันเบต้าแล้ว และมีการอัปเดตที่น่าสนใจมากมายสำหรับนักพัฒนาส่วนขยาย Chrome มาดูกันว่ามีอะไรใหม่บ้าง
เปิดแผงด้านข้างโดยใช้โปรแกรม
แผงด้านข้างเป็นหนึ่งในฟีเจอร์ที่มีการขอมากที่สุดในส่วนขยาย Chrome และพร้อมใช้งานใน Chrome ตั้งแต่เวอร์ชัน 114 หลังจากเปิดตัว Side Panel API ความคิดเห็นแรกๆ ที่เราได้รับคือ นักพัฒนาซอฟต์แวร์ต้องการวิธีเปิดแผงด้านข้างโดยอัตโนมัติ และนี่คือสิ่งที่เกิดขึ้น chrome.sidePanel.open
พร้อมใช้งานในเวอร์ชันเบต้าแล้ว คุณสามารถใช้เพื่อเปิดแผงด้านข้างของส่วนขยายแบบเป็นโปรแกรมเพื่อตอบสนองต่อการโต้ตอบของผู้ใช้ เช่น การคลิกเมนูบริบท
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === 'openSidePanel') {
// This will open the panel in all the pages on the current window.
chrome.sidePanel.open({ windowId: tab.windowId });
}
});
การรองรับ WebSocket ใน Service Worker
การรองรับ WebSocket มีความสำคัญอย่างยิ่งสำหรับส่วนขยายจำนวนมากที่วางแผนจะย้ายไปใช้ Manifest V3 Chrome 116 ปรับปรุงการรองรับ WebSocket ใน Service Worker เพิ่มเติม เนื่องจากกิจกรรม WebSocket ทั้งหมดจะรีเซ็ตตัวจับเวลาการทำงานที่ไม่ได้ใช้งานของ Service Worker เป็น 30 วินาที ซึ่งหมายความว่าตราบใดที่ WebSocket ใช้งานอยู่ Service Worker จะยังคงทำงานต่อไป
คุณสามารถใช้ฟีเจอร์นี้เพื่อใช้กลไกการทำงานแบบ Keep-Alive เพื่อให้มั่นใจว่า Service Worker จะยังคงทำงานอยู่ขณะที่คุณรอข้อความจากเซิร์ฟเวอร์ แม้ว่าข้อความถัดไปจะมาถึงในเวลามากกว่า 30 วินาทีก็ตาม
function keepAlive() {
const keepAliveIntervalId = setInterval(
() => {
if (webSocket) {
webSocket.send('keepalive');
} else {
clearInterval(keepAliveIntervalId);
}
},
// It's important to pick an interval that's shorter than 30s, to
// avoid that the service worker becomes inactive.
2
0 * 1000
);
}
ดูรายละเอียดเพิ่มเติมได้ในคู่มือและตัวอย่าง WebSocket ใหม่ของเรา
Keepalive ที่แข็งแกร่งสำหรับ Service Worker
เมื่อพูดถึงวงจรการทำงานของ Service Worker ก็มีการอัปเดตที่สำคัญอีกอย่างหนึ่ง นั่นคือ Keepalive ที่มีประสิทธิภาพสำหรับ API ที่ต้องมีการโต้ตอบจากผู้ใช้ API ที่ต้องมีการโต้ตอบจากผู้ใช้จะมี Keepalive "ที่เข้มงวด" สำหรับ Service Worker ของส่วนขยาย (กล่าวคือ อนุญาตให้ Worker ใช้เวลานานกว่า 5 นาทีในงานนี้) ดังนี้
permissions.request()
desktopCapture.chooseDesktopMedia()
identity.launchWebAuthFlow()
management.uninstall()
การบันทึกเสียงและวิดีโอในเบื้องหลัง
เราได้ปิดช่องว่างอีกช่องหนึ่งระหว่าง Manifest V2 กับ Manifest V3 แล้ว โดยคุณสามารถบันทึกเสียงและวิดีโอในเบื้องหลังได้โดยใช้ tabCapture
และเอกสารนอกหน้าจอ ใช้ chrome.tabCapture
API ใน Service Worker
เพื่อรับรหัสสตรีมตามท่าทางของผู้ใช้ จากนั้นจะส่งไปยังเอกสารนอกหน้าจอเพื่อเริ่มบันทึกได้
ดูtabCapture
คำแนะนำที่อัปเดตแล้วเพื่อดูวิธีการทำงาน หรือดูตัวอย่างที่ใช้งานได้ในตัวอย่าง Tab Capture - Recorder
API ใหม่: runtime.getContexts()
runtime.getContexts()
API ใหม่ช่วยให้คุณดึงข้อมูลเกี่ยวกับบริบทที่ใช้งานอยู่ซึ่งเชื่อมโยงกับส่วนขยายได้ เช่น คุณสามารถใช้เพื่อตรวจสอบว่ามีเอกสารนอกหน้าจอที่ใช้งานอยู่หรือไม่
const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
(c) => c.contextType === 'OFFSCREEN_DOCUMENT
9;
);
เหตุผลใหม่ที่ไม่อยู่ในหน้าจอ: GEOLOCATION
geolocation
ได้รับการเพิ่มเป็นอีกเหตุผลที่ถูกต้องในการใช้เอกสารนอกหน้าจอ ดูคำแนะนำการใช้ตำแหน่งทางภูมิศาสตร์เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีรับตำแหน่งทางภูมิศาสตร์ของส่วนขยายโดยใช้ Offscreen API
chrome.action.setBadgeText()
action.setBadgeText
ได้รับการอัปเดตเพื่อแก้ไขความไม่สอดคล้องกันระหว่าง Manifest V2 กับ Manifest V3 การส่งสตริงว่างหรือ null
ไปยัง action.setBadgeText
จะล้างข้อความป้ายสำหรับแท็บที่ระบุและใช้ข้อความป้ายทั่วโลกแทน
action.setBadgeText({tabId: tabId, text: '
39;});
สรุป: อีกก้าวหนึ่งสู่ไฟล์ Manifest V3
การรองรับอายุการใช้งานของ Service Worker ที่ได้รับการปรับปรุงและ TabCapture API ที่อัปเดตแล้วช่วยให้เราบรรลุเป้าหมายในการลดช่องว่างของฟีเจอร์ระหว่าง Manifest V2 กับ V3 ได้อย่างต่อเนื่อง โปรดดูสถานะปัจจุบันในหน้าปัญหาที่ทราบ