גרסה 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 ב-service workers משתפרת עוד יותר, כי כל פעילות של WebSocket תאפס את הטיימר של 30 שניות של חוסר פעילות ב-service worker. המשמעות היא שכל עוד ה-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.
2
0 * 1000
);
}
פרטים נוספים זמינים במדריך ובדוגמה החדשים שלנו בנושא WebSocket.
שמירת חיבור חזקה לקובצי Service Worker
בנושא מחזור החיים של Service Worker, יש עוד עדכון חשוב: שמירת חיבור חזקה (keepalive) לממשקי API שדורשים אינטראקציה עם המשתמש. לממשקי API שדורשים אינטראקציה עם המשתמש יהיו פעימות לב חזקות בשביל סקריפטים של שירותים לתוספים (כלומר, יאפשרו לסקריפט לבצע את המשימה הזו במשך יותר מ-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
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
המשכנו להתקדם לעבר המטרה שלנו לצמצם את הפער בין התכונות של Manifest V2 ו-V3, עם תמיכה משופרת ב-Service Worker lifetime ועם TabCapture API מעודכן. כדאי לעיין בדף הבעיות המוכרות כדי לראות את הסטטוס הנוכחי.