מה חדש בגרסה 116 של Chrome לתוספים

גרסה 116 של Chrome זמינה עכשיו בגרסת בטא וכוללת הרבה עדכונים מעולים למפתחי תוספים ל-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 חיונית לתוספים רבים שמתכננים לעבור למניפסט מגרסה V3. בגרסה 116 של Chrome משפרים עוד יותר את התמיכה ב-WebSocket ב-Service Workers כי כל הפעילות ב-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.
    20 * 1000
  );
}

לפרטים נוספים, כדאי לעיין במדריך החדש של WebSocket ובדוגמה.

הודעת keep-alive חזקה ל-Service Workers

אם כבר מדברים על מחזור החיים של Service Worker, יצא עדכון חשוב נוסף: הודעת keep-alive חזקה לממשקי API שמחייבים אינטראקציה עם משתמשים. לממשקי API שמחייבים אינטראקציה עם המשתמש יהיו הודעות keep-alive "חזקות" לעובדי שירות של תוסף (כלומר, לאפשר לעובד להקדיש יותר מ-5 דקות למשימה זו):

הקלטת אודיו ווידאו ברקע

נסגר פער נוסף בין Manifest V2 לבין Manifest V3: אפשר להקליט אודיו ווידאו ברקע באמצעות tabCapture ומסמכים שמחוץ למסך. שימוש ב-API chrome.tabCapture ב-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 נוספה כעוד סיבה לגיטימית לשימוש במסמך שאינו מוצג במסך. עיינו במדריך שימוש במיקום גיאוגרפי כדי לקבל מידע נוסף על האופן שבו ניתן לקבל את המיקום הגיאוגרפי של התוסף באמצעות ממשק ה-API של Offscreen.

chrome.action.setBadgeText()

העדכון של action.setBadgeText בוצע כדי לטפל בחוסר עקביות בין Manifest V2 לבין Manifest V3. העברה של מחרוזת ריקה או של null אל action.setBadgeText תגרום למחיקה של טקסט התג בכרטיסייה שצוינה, ובמקום זאת ייעשה שימוש בטקסט של התג הגלובלי כברירת מחדל.

action.setBadgeText({tabId: tabId, text: ''});

סיכום: שלב נוסף לקראת גרסה 3 של המניפסט

עם תמיכה משופרת בכל משך החיים של Service Worker ו-TabCapture API המעודכן, המשכנו להתקדם לעבר היעד לצמצום פער התכונות בין Manifest V2 ל-V3. בדף הבעיות המוכרות שלנו אפשר לבדוק את הסטטוס הנוכחי.