موارد جدید در Chrome 116 برای برنامه‌های افزودنی

Chrome 116 اکنون به صورت بتا در دسترس است و شامل به‌روزرسانی‌های هیجان‌انگیز بسیاری برای توسعه‌دهندگان Chrome Extension است. بیایید نگاهی گذرا به چیزهای جدید بیندازیم.

سباستین بنز
سباستین بنز

به صورت برنامه ریزی شده یک Sidepanel را باز کنید

Sidepanel یکی از ویژگی‌های درخواستی در افزونه‌های کروم بوده است و از نسخه 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 تایمر بی‌حرکت 30s Service Worker را بازنشانی می‌کند. این بدان معنی است که تا زمانی که WebSocket شما فعال است، سرویس دهنده زنده می ماند.

می‌توانید از این برای پیاده‌سازی مکانیزم نگهدارنده استفاده کنید تا اطمینان حاصل شود که سرویس‌کار شما در حالی که منتظر پیام‌های سرورتان هستید فعال می‌ماند - حتی اگر تا رسیدن پیام بعدی بیش از 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 ما و نمونه آن را برای جزئیات بیشتر بررسی کنید.

نگهدارنده قوی برای کارگران خدماتی

صحبت از چرخه عمر کارمندان خدمات، به روز رسانی مهم دیگری است: نگه داشتن قوی برای API هایی که نیاز به تعامل کاربر دارند. APIهایی که به تعامل کاربر نیاز دارند، نگهدارنده‌های «قوی» برای کارکنان خدمات توسعه خواهند داشت (یعنی به کارگر اجازه می‌دهد بیش از 5 دقیقه برای این کار وقت بگذارد):

ضبط صدا و تصویر در پس زمینه

شکاف دیگری بین Manifest V2 و Manifest V3 بسته شده است: می توانید صدا و تصویر را در پس زمینه با استفاده از tabCapture و اسناد خارج از صفحه ضبط کنید. از chrome.tabCapture API در یک سرویس دهنده برای دریافت شناسه جریان به دنبال اشاره کاربر استفاده کنید. سپس می توان آن را برای شروع ضبط به یک سند خارج از صفحه ارسال کرد.

راهنمای به روز شده tabCapture ما را بررسی کنید تا نحوه عملکرد آن را بیاموزید یا برای مثال کارکردی، نمونه Tab Capture - Recorder را ببینید.

API جدید: runtime.getContexts()

API جدید runtime.getContexts() به شما امکان می دهد اطلاعاتی در مورد زمینه های فعال مرتبط با برنامه های افزودنی خود دریافت کنید. به عنوان مثال، می توانید از آن برای بررسی اینکه آیا یک سند خارج از صفحه فعال وجود دارد استفاده کنید:

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

با پشتیبانی مادام العمر سرویس Worker بهبود یافته و TabCapture API به روز شده، ما به پیشرفت در هدف خود برای کاهش شکاف ویژگی بین Manifest V2 و V3 ادامه داده ایم. صفحه مشکلات شناخته شده ما را برای وضعیت فعلی بررسی کنید.