يتوفّر الإصدار 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 أمرًا بالغ الأهمية للعديد من الإضافات التي تخطّط للانتقال إلى الإصدار Manifest V3. يُحسِّن الإصدار 116 من Chrome إمكانية استخدام WebSocket في برامج الخدمة بشكلٍ أكبر، إذ سيؤدي أي نشاط على WebSocket إلى إعادة ضبط مؤقّت عدم النشاط في برنامج الخدمة الذي تبلغ مدته 30 ثانية. وهذا يعني أنّه طالما أنّ 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.
2
0 * 1000
);
}
يمكنك الاطّلاع على الدليل والعينة الجديدَين حول WebSocket للحصول على مزيد من التفاصيل.
إبقاء مشغّلي الخدمات نشطين
في ما يتعلّق بدورة حياة عامِل الخدمة، تم طرح تحديث مهم آخر: إبقاء الاتصال نشطًا بشكل دائم لواجهات برمجة التطبيقات التي تتطلّب تفاعلاً من المستخدم. ستتضمّن واجهات برمجة التطبيقات التي تتطلّب تفاعلاً من المستخدم عمليات إبقاء نشاط "قوية" لبرامج الخدمة في الخلفية الخاصة بالإضافات (أي السماح لبرنامج الخدمة في الخلفية باستغراق وقت أطول من 5 دقائق في هذه المهمة):
permissions.request()
desktopCapture.chooseDesktopMedia()
identity.launchWebAuthFlow()
management.uninstall()
تسجيل الصوت والفيديو في الخلفية
تمت إزالة فرق آخر بين الإصدار Manifest V2 والإصدار Manifest V3، إذ يمكنك تسجيل الصوت والفيديو في الخلفية باستخدام tabCapture
والمستندات خارج الشاشة. استخدِم واجهة برمجة التطبيقات chrome.tabCapture
في عامل خدمة
للحصول على معرّف بث بعد إجراء المستخدم. يمكن بعد ذلك تمرير هذا المعرّف إلى مستند خارج الشاشة لبدء التسجيل.
يمكنك الاطّلاع على دليل tabCapture
المعدَّل لمعرفة طريقة عمله، أو الاطّلاع على نموذج Tab Capture - Recorder للحصول على مثال عملي.
واجهة برمجة تطبيقات جديدة: runtime.getContexts()
تتيح لك واجهة برمجة التطبيقات الجديدة runtime.getContexts()
استرداد معلومات عن السياقات النشطة المرتبطة بإضافاتك. على سبيل المثال، يمكنك استخدامها للتحقّق مما إذا كان هناك مستند خارج الشاشة نشط:
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
من خلال تحسين إمكانية استخدام Service Worker لفترة أطول وتعديل TabCapture API، واصلنا إحراز تقدّم نحو هدفنا المتمثل في سدّ الفجوة بين ميزات الإصدارين Manifest V2 وV3. يمكنك الاطّلاع على صفحة المشاكل المعروفة لمعرفة الحالة الحالية.