إذن "activeTab"

يمنح الإذن "activeTab" الإضافة إمكانية الوصول المؤقت إلى علامة التبويب النشطة حاليًا عندما يستدعي المستخدم الإضافة، مثلاً من خلال النقر على الإجراء المتعلّق بها. يستمر الوصول إلى علامة التبويب أثناء تواجد المستخدم على تلك الصفحة، ويتم إبطال إمكانية الوصول إليها عندما يغادر المستخدم علامة التبويب أو يغلقها. على سبيل المثال، إذا استدعى المستخدم الإضافة على https://example.com ثم انتقل إلى https://example.com/foo، سيظل بإمكان الإضافة الوصول إلى الصفحة. في حال انتقال المستخدم إلى https://chromium.org، سيتم إبطال إمكانية الوصول.

يعمل هذا الإجراء كبديل للعديد من استخدامات "<all_urls>"، ولكنّه لا يعرض أي رسالة تحذير أثناء التثبيت:

بدون "activeTab":

بدون علامة التبويب النشطة

مع ""activeTab"":

مع علامة تبويب نشطة

مثال

اطّلع على نموذج إضافة Page Redder:

manifest.json:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}

عاملو الخدمات:

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  if (!tab.url.includes('chrome://')) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

الحافز

يمكنك استخدام إضافة اقتصاص على الويب تتضمّن إجراء وعنصر قائمة سياق. قد تحتاج هذه الإضافة إلى الوصول إلى علامات التبويب فقط عند النقر على إجراءها أو عند تنفيذ عنصر قائمة السياق.

بدون إضافة "activeTab"، ستحتاج هذه الإضافة إلى طلب وصول كامل ومستمر إلى كل موقع إلكتروني، حتى يتمكّن المستخدم من تنفيذ مهامه إذا تلقّى طلبًا منها. هذه قوة كبيرة يمكن إسنادها إلى مثل هذا الامتداد البسيط. وإذا تم اختراق الإضافة في أي وقت، سيتمكن المهاجم من الوصول إلى كل ما تمتلكه الإضافة.

في المقابل، لا يمكن للإضافة التي لديها إذن "activeTab" سوى الوصول إلى علامة تبويب استجابةً لإيماءة مستخدم صريحة. وإذا تعرضت الإضافة للاختراق، سيحتاج المهاجم إلى انتظار المستخدم لاستدعاء الإضافة قبل الحصول على إمكانية الوصول. ويستمر هذا الوصول فقط إلى أن يتم التنقل في علامة التبويب أو يتم إغلاقها.

ما الذي يسمح به "activeTab"

عندما يكون إذن ""activeTab"" مفعَّلاً لإحدى علامات التبويب، يمكن للإضافة إجراء ما يلي:

  • يمكنك الاتصال بالرقم scripting.insertCSS() أو scripting.executeScript() في علامة التبويب هذه إذا تم أيضًا الإعلان عن الإذن "scripting" (كما في المثال أعلاه).
  • احصل على عنوان URL والعنوان والرمز المفضّل لعلامة التبويب هذه من خلال واجهة برمجة تطبيقات تعرض عنصر tabs.Tab (يمنح "activeTab" إذن المضيف مؤقتًا)
  • يمكنك اعتراض طلبات الشبكة في علامة التبويب للوصول إلى أصل الإطار الرئيسي لعلامة التبويب باستخدام واجهة برمجة التطبيقات webRequest. تحصل الإضافة مؤقتًا على أذونات المضيف لأصل الإطار الرئيسي لعلامة التبويب.

استدعاء علامة التبويب النشطة

تعمل إيماءات المستخدم التالية على تفعيل إذن ""activeTab"":