גרסת 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 Workers
תמיכה ב-WebSocket חיונית להרבה תוספים שמתכננים לעבור ל-Manifest V3. ב-Chrome 116 נוספו שיפורים לתמיכה ב-WebSocket בשירותי העבודה, כי כל הפעילות ב-WebSocket תאפס את הטיימר של 30 שניות לפעילות לא פעילה של שירותי עבודה. המשמעות היא שכל עוד ה-WebSocket פעיל, ה-service worker יישאר פעיל.
אפשר להשתמש בזה כדי להטמיע מנגנון 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.
keepalive חזק לקובצי שירות (Service Workers)
בנוגע למחזור החיים של שירותי ה-worker, רצינו לעדכן אתכם על עדכון חשוב נוסף: keepalive חזק לממשקי API שדורשים אינטראקציה עם משתמשים. לממשקי API שדורשים אינטראקציה עם משתמש יהיו הודעות keepalives 'חזקות' לשירותי העובדים של התוספים (כלומר, העובדים יוכלו להקדיש יותר מ-5 דקות למשימה הזו):
permissions.request()
desktopCapture.chooseDesktopMedia()
identity.launchWebAuthFlow()
management.uninstall()
הקלטת אודיו ווידאו ברקע
חסם נוסף בין Manifest V2 ל-Manifest V3 נסגר: אפשר להקליט אודיו ווידאו ברקע באמצעות tabCapture
ומסמכים מחוץ למסך. משתמשים ב-API chrome.tabCapture
ב-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'
);
סיבה חדשה להצגה מחוץ למסך: 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. בדף הבעיות המוכרות אפשר לבדוק מה הסטטוס הנוכחי.