إذن "activeTab"

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

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

بدون "activeTab":

بدون activeTab

مع ""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":