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 วินาที ซึ่งหมายความว่า Service Worker จะยังคงทำงานอยู่ตราบใดที่ WebSocket ทำงานอยู่
คุณสามารถใช้เมธอดนี้เพื่อใช้กลไก Keepalive เพื่อให้ 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.
20 * 1000
);
}
ดูรายละเอียดเพิ่มเติมได้ในคู่มือและตัวอย่าง WebSocket ใหม่
สถานะ "ทำงานอยู่" ที่มีประสิทธิภาพสำหรับ Service Worker
เมื่อพูดถึงวงจรการทำงานของ Service Worker เรามีข้อมูลอัปเดตสำคัญอีกอย่างหนึ่งมาแจ้งให้ทราบ นั่นก็คือ Keepalive ที่มีประสิทธิภาพสำหรับ API ที่ต้องมีการโต้ตอบกับผู้ใช้ API ที่ต้องโต้ตอบกับผู้ใช้จะมี Keepalive ที่ "มีประสิทธิภาพ" สําหรับผู้ดําเนินการบริการส่วนขยาย (กล่าวคือ อนุญาตให้ผู้ดําเนินการทํางานนานกว่า 5 นาทีในงานนี้)
permissions.request()
desktopCapture.chooseDesktopMedia()
identity.launchWebAuthFlow()
management.uninstall()
การบันทึกเสียงและวิดีโอในเบื้องหลัง
ช่องว่างอีกช่องหนึ่งระหว่าง Manifest V2 กับ Manifest V3 ได้ถูกปิดลงแล้ว นั่นคือคุณสามารถบันทึกเสียงและวิดีโอในเบื้องหลังได้โดยใช้ tabCapture
และเอกสารที่แสดงนอกหน้าจอ ใช้ chrome.tabCapture
API ใน Service Worker เพื่อรับรหัสสตรีมตามท่าทางสัมผัสของผู้ใช้ จากนั้นสามารถส่งไปยังเอกสารนอกหน้าจอเพื่อเริ่มบันทึก
โปรดดูคู่มือ tabCapture
ฉบับปรับปรุงเพื่อดูวิธีการทำงานของฟีเจอร์ หรือดูตัวอย่างการใช้งานได้ที่การจับภาพแท็บ - เครื่องบันทึก
API ใหม่: runtime.getContexts()
runtime.getContexts()
API ใหม่ช่วยให้คุณดึงข้อมูลเกี่ยวกับบริบทที่ใช้งานอยู่ซึ่งเชื่อมโยงกับชิ้นงานได้ เช่น คุณสามารถใช้เพื่อตรวจสอบว่ามีเอกสารที่ใช้งานอยู่นอกหน้าจอหรือไม่ โดยทำดังนี้
const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
(c) => c.contextType === 'OFFSCREEN_DOCUMENT'
);
เหตุผลใหม่ที่อยู่นอกหน้าจอ: GEOLOCATION
เพิ่ม geolocation
เป็นเหตุผลที่ถูกต้องอีกประการหนึ่งสำหรับการใช้เอกสารนอกหน้าจอ ดูคู่มือการใช้ตำแหน่งทางภูมิศาสตร์เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีรับตำแหน่งทางภูมิศาสตร์ของส่วนขยายโดยใช้ Offscreen API
chrome.action.setBadgeText()
action.setBadgeText
ได้รับการอัปเดตเพื่อแก้ไขความไม่สอดคล้องกันระหว่าง Manifest V2 กับ Manifest V3 การส่งสตริงว่างหรือ null
ไปยัง action.setBadgeText
จะเป็นการล้างข้อความป้ายสำหรับแท็บที่ระบุและตั้งค่าเริ่มต้นเป็นข้อความป้ายแบบทั่วไปแทน
action.setBadgeText({tabId: tabId, text: ''});
สรุป: อีกก้าวสู่ Manifest V3
การรองรับ Service Worker ตลอดอายุการใช้งานที่ปรับปรุงใหม่และ TabCapture API ที่อัปเดตแล้วช่วยให้เราบรรลุเป้าหมายในการลดช่องว่างของฟีเจอร์ระหว่าง Manifest V2 กับ V3 ได้อย่างต่อเนื่อง โปรดดูสถานะปัจจุบันในหน้าปัญหาที่ทราบ