أتاح النظام الأساسي للمطوّرين عرض الإضافة منذ إطلاق إضافات Chrome الوظائف مباشرة في واجهة مستخدم Chrome ذات المستوى الأعلى باستخدام الإجراءات. الإجراء هو زر أيقونة يمكنه فتح نافذة منبثقة أو تشغيل بعض الوظائف في الإضافة. في السابق، كان Chrome يدعم وأنواع الإجراءات وإجراءات المتصفح والإجراءات على الصفحة غيَّر Manifest V3 هذا من خلال دمج في واجهة برمجة تطبيقات chrome.action جديدة.
سجلّ قصير من إجراءات الإضافة
"chrome.action
" هو جديد في الإصدار Manifest V3، ولكنّ الوظائف الأساسية التي يوفّرها تعود إلى الإصدار الثالث.
إلى وقت استقرار هذه الإضافات لأول مرة في كانون الثاني (يناير) 2010. الثابت الأول
كان إصدار نظام إضافات Chrome يتيح نوعين مختلفين من الإجراءات: المتصفح
الإجراءات وإجراءات الصفحة.
حيث سمحت إجراءات المتصفح لمطوّري الإضافات بعرض رمز "في شريط أدوات Google Chrome الرئيسي، إلى يمين شريط العناوين" (المصدر) ووفّر للمستخدمين طريقة سهلة لتشغيل وظيفة الإضافة في أي صفحة. من ناحية أخرى، كان الغرض من إجراءات الصفحة "يمثل الإجراءات التي يمكن اتخاذها في الصفحة الحالية، ولكن هذه الإجراءات لا تنطبق على جميع الصفحات" (المصدر).
بعبارة أخرى، منحت إجراءات المتصفّح مطوّري الإضافات مساحة واجهة مستخدم دائمة في المتصفّح بينما تظهر إجراءات الصفحة فقط عندما يكون بإمكان الإضافة تقديم معلومات مفيدة في الصفحة الحالية.
كان كلا النوعين من الإجراءات اختياريًا، لذلك يمكن لمطوّر الإضافات اختيار تقديم إما لا أو إجراء على الصفحة أو إجراء متصفح (لا يُسمح بتحديد إجراءات متعددة).
بعد ما يقرب من ست سنوات، قدَّم Chrome 49 نموذجًا جديدًا لواجهة المستخدم للإضافات. للمساعدة المستخدمين معرفة الإضافات التي لديهم، وبدأ Chrome في عرض جميع الإضافات النشطة على يمين المربع المتعدد الاستخدامات. يمكن للمستخدمين "تجاوز" الإضافات في قائمة Chrome إذا أرادوا ذلك.
لعرض رمز لكل إضافة، أدى هذا التحديث أيضًا إلى إجراء تغييرين هامين على سلوك الإضافات في واجهة مستخدم Chrome أولاً، بدأت جميع الإضافات في عرض الرموز في شريط الأدوات. إذا لم تكن الإضافة تحتوي على رمز، سينشئ Chrome رمزًا لها تلقائيًا. ثانيًا، إجراءات الصفحة تم نقلها إلى شريط الأدوات إلى جانب إجراءات المتصفّح، وأصبحوا بحاجة إلى تمييز بين "العرض" و"إخفاء" الولايات.
أتاح هذا التغيير استمرار عمل إضافات إجراءات الصفحة على النحو المتوقع، ولكنه انخفض أيضًا دور إجراءات الصفحة بمرور الوقت. كان أحد تأثيرات إعادة تصميم واجهة المستخدم هو أن إجراءات الصفحة يتم وصفها بشكل فعّال من خلال إجراءات المتصفّح. نظرًا لظهور جميع الإضافات في شريط الأدوات، جاء المستخدمون إلى من المتوقع أن يؤدي النقر على رمز شريط أدوات الإضافة إلى استدعاء الإضافة، وإجراءات المتصفح تفاعلاً متزايد الأهمية لإضافات Chrome.
التغييرات على إصدار Manifest V3
استمرّ تطوّر واجهة مستخدم Chrome وإضافاته على مدار السنوات التي تلت واجهة مستخدم الإضافات لعام 2016. عملية إعادة التصميم، إلا أنّ إجراءات المتصفح وإجراءاته لم تتغير إلى حد كبير. وهذا على الأقل حتى بدأنا التخطيط لكيفية تحديث النظام الأساسي للإضافات باستخدام إصدار Manifest V3.
وكان من الواضح لفريق الإضافات أن إجراءات المتصفح وإجراءات الصفحة أصبحت أكثر التميز دون معنى. والأسوأ من ذلك، أن الاختلافات الطفيفة في السلوك جعلت من الصعب على المطورين لتحديد أيهما يجب استخدامه. وأدركنا أنه يمكننا معالجة هذه المشكلات من خلال الجمع بين المتصفح إجراء وإجراء الصفحة في "إجراء" واحد.
أدخِل واجهة برمجة تطبيقات الإجراء. هناك تشابه مباشر بين chrome.action
وchrome.browserAction
، ولكنه
على بعض الاختلافات الملحوظة.
أولاً، يقدّم chrome.action
طريقة جديدة باسم getUserSettings()
. هذه الطريقة
لمطوّري الإضافات طريقةً للتحقق مما إذا كان المستخدم قد ثبّت إجراء الإضافة على
شريط الأدوات.
let userSettings = await chrome.action.getUserSettings();
console.log(`Is the action pinned? ${userSettings.isOnToolbar ? 'Yes' : 'No'}.`);
"getUserSettings" قد يبدو اسمًا غير عادي لهذه الوظيفة مقارنةً، على سبيل المثال، "isInstall"، ولكن يوضّح سجلّ الإجراءات في Chrome أنّ واجهة مستخدم المتصفّح تتغيّر بشكل أسرع من واجهات برمجة التطبيقات للإضافات. وبناءً على ذلك، هدفنا من واجهة برمجة التطبيقات هذه هو عرض الإعدادات المفضّلة للمستخدم ذات الصلة بالإجراءات على الواجهات العامة لتقليل حالات إيقاف استخدام واجهة برمجة التطبيقات في المستقبل. كما أنه يتيح موردي المتصفحات الآخرين الكشف مفاهيم واجهة المستخدم الخاصة بالمتصفّح في الكائن UserSettings التي يعرضها هذا .
ثانيًا، يمكن التحكّم في الرمز وحالة التفعيل أو الإيقاف لإجراء الإضافة باستخدام واجهة برمجة تطبيقات المحتوى التعريفي هذه الخطوة مهمة لأنّها تتيح للإضافات التفاعل مع عملية تصفُّح المستخدم. السلوك بدون الوصول إلى المحتوى أو حتى عناوين URL للصفحات التي يزورونها. على سبيل المثال، الاطّلاع على طريقة تفعيل إحدى الإضافات لإجراءها عندما يزور المستخدم صفحات على example.com.
// Manifest V3
chrome.runtime.onInstalled.addListener(() => {
chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
chrome.declarativeContent.onPageChanged.addRules([
{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: {hostSuffix: '.example.com'},
})
],
actions: [new chrome.declarativeContent.ShowAction()]
}
]);
});
});
الرمز أعلاه متطابق تقريبًا مع ما ستفعله الإضافة مع إجراء الصفحة.
الفرق هو أننا في إصدار Manifest V3 استخدمنا declarativeContent.ShowAction
بدلاً من
declarativeContent.ShowPageAction
في الإصدار 2 من البيان
وأخيرًا، يمكن لأدوات حظر المحتوى استخدام واجهة برمجة التطبيقات declarativeNetRequest API
setExtensionActionOptions
) لعرض عدد
الطلبات التي حظرتها الإضافة لعلامة تبويب معيّنة. هذه الإمكانية مهمة لأنها تتيح
أدوات حظر المحتوى لإبقاء المستخدمين النهائيين على اطّلاع على آخر الأخبار بدون الكشف عن بيانات التصفّح التي يُحتمل أن تكون حسّاسة
الإضافة.
الخاتمة
كان تحديث منصة إضافات Chrome أحد دوافعنا الرئيسية للإصدار Manifest V3. بعدة طرق الحالات التي تعني الانتقال إلى تقنيات جديدة، ولكنه يعني أيضًا تبسيط واجهة برمجة التطبيقات لدينا، فهذا ما كان هدفنا هنا.
آمل أن تكون هذه المشاركة قد ساعدت في تسليط الضوء على هذا الجانب من منصة Manifest V3. إلى للمزيد من المعلومات حول كيفية تعامل فريق Chrome مع مستقبل إضافات المتصفّح، يمكن الاطّلاع على رؤية المنصة ونظرة عامة على صفحات Manifest V3 في وثائق مطوّر البرامج. يمكنك أيضًا مناقشة إضافات Chrome مع مطوّري برامج آخرين على مجموعة Google chromium-extensions.