browser.declarativeContent

شرح

از chrome.declarativeContent API برای انجام کنش‌ها براساس محتوای صفحه استفاده کنید، بدون اینکه نیاز به اجازه خواندن محتوای صفحه داشته باشید.

اجازه‌ها

declarativeContent

مفاهیم و استفاده

«میانای برنامه کاربردی محتوای بیانیه» به شما امکان می‌دهد کنش افزونه‌تان را بسته به نشانی وب صفحه وب یا درصورتی‌که انتخابگر CSS با عنصری در صفحه مطابقت داشته باشد فعال کنید، بدون اینکه نیاز باشد اجازه‌های میزبان اضافه کنید یا برنامه محتوا تزریق کنید.

از اجازه activeTab برای تعامل با صفحه پس‌از کلیک کاربر روی کنش افزونه استفاده کنید.

قوانین

قوانین شامل شرایط و کنش‌ها است. اگر هریک از شرایط برآورده شود، همه کنش‌ها اجرا می‌شوند. کنش‌ها setIcon() و showAction() هستند.

PageStateMatcher تنها درصورتی با صفحه‌های وب مطابقت می‌کند که همه معیارهای فهرست‌شده برآورده شود. می‌تواند با نشانی وب صفحه، گزینشگر مرکب css یا وضعیت نشانک‌گذاری‌شده صفحه مطابقت داشته باشد. قانون زیر کنش افزونه را در صفحه‌های Google وقتی فیلد گذرواژه وجود دارد فعال می‌کند:

let rule1 = {
  conditions: [
    new browser.declarativeContent.PageStateMatcher({
      pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
      css: ["input[type='password']"]
    })
  ],
  actions: [ new browser.declarativeContent.ShowAction() ]
};

برای فعال کردن کنش افزونه برای سایت‌های Google دارای ویدیو، می‌توانید شرط دومی اضافه کنید، زیرا هر شرط برای راه‌اندازی همه کنش‌های مشخص‌شده کافی است:

let rule2 = {
  conditions: [
    new browser.declarativeContent.PageStateMatcher({
      pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
      css: ["input[type='password']"]
    }),
    new browser.declarativeContent.PageStateMatcher({
      css: ["video"]
    })
  ],
  actions: [ new browser.declarativeContent.ShowAction() ]
};

رویداد onPageChanged آزمایش می‌کند که آیا هر قانونی حداقل یک شرط برآورده‌شده دارد یا نه و کنش‌ها را اجرا می‌کند. قوانین در سراسر جلسات مرور باقی می‌مانند؛ بنابراین، درطول زمان نصب افزونه، ابتدا باید از removeRules برای پاک کردن قوانین نصب‌شده قبلی استفاده کنید و سپس از addRules برای ثبت قوانین جدید استفاده کنید.

browser.runtime.onInstalled.addListener(function(details) {
  browser.declarativeContent.onPageChanged.removeRules(undefined, function() {
    browser.declarativeContent.onPageChanged.addRules([rule2]);
  });
});

با اجازه activeTab، افزونه شما هیچ هشدار اجازه‌ای نمایش نخواهد داد و وقتی کاربر روی کنش افزونه کلیک می‌کند، فقط در صفحه‌های مرتبط اجرا خواهد شد.

تطبیق نشانی وب صفحه

وقتی معیارهای نشانی وب برآورده شود، PageStateMatcher.pageurl مطابقت پیدا می‌کند. رایج‌ترین معیارها عبارت‌اند از ترکیب میزبان، مسیر، یا نشانی وب، به‌همراه «شامل»، «برابر»، «پیشوند»، یا «پسوند». جدول زیر شامل چند نمونه است:

معیارها موارد منطبق
{ hostSuffix: 'google.com' } همه نشانی‌های وب Google
{ pathPrefix: '/docs/extensions' } نشانی‌های وب اسناد افزونه
{ urlContains: 'developer.chrome.com' } همه نشانی‌های وب اسناد توسعه‌دهندگان Chrome

همه معیارها حروف‌حساس هستند. برای فهرست کامل معیارها، UrlFilter را ببینید.

تطبیق CSS

PageStateMatcher.css شرط باید انتخابگر مرکب باشد، یعنی نمی‌توانید ترکیب‌کننده‌هایی مثل فضای خالی یا «>» را در انتخابگرهایتان بگنجانید. این کار به Chrome کمک می‌کند انتخابگرها را کارآمدتر مطابقت دهد.

گزینشگرهای مرکب (تأیید) گزینشگرهای پیچیده (نامناسب)
a div p
iframe.special[src^='http'] p>span.highlight
ns|* p + ol
#abcd:checked p::first-line

شرایط CSS فقط با عناصر نمایش‌داده‌شده مطابقت دارد: اگر عنصری که با گزینشگر شما مطابقت دارد display:none باشد یا یکی از عناصر والد آن display:none باشد، باعث نمی‌شود شرط مطابقت کند. عناصری که با visibility:hidden سبک‌بندی شده‌اند، در خارج از صفحه قرار گرفته‌اند، یا توسط عناصر دیگر پنهان شده‌اند همچنان می‌توانند باعث شوند وضعیت شما مطابقت پیدا کند.

تطبیق وضعیت نشانک‌گذاری‌شده

شرط PageStateMatcher.isBookmarked امکان مطابقت وضعیت نشانک‌گذاری نشانی وب فعلی در نمایه کاربر را فراهم می‌کند. برای استفاده از این شرط، اجازه «نشانک‌ها» باید در مانیفست افزونه اعلام شود.

انواع

نوع

ImageData

PageStateMatcher

وضعیت صفحه وب را براساس معیارهای مختلف مطابقت می‌دهد.

مشخصات

  • سازنده

    باطل

    تابع constructor به‌صورت زیر است:

    (arg: PageStateMatcher) => {...}

  • css

    رشته[] اختیاری

    اگر همه انتخاب‌گرهای CSS در آرایه با عناصر نمایش‌داده‌شده در چارچوبی با مبدأ یکسان با چارچوب اصلی صفحه مطابقت داشته باشند، مطابقت پیدا می‌کند. همه انتخابگرهای این آرایه باید انتخابگرهای مرکب باشند تا سرعت مطابقت افزایش یابد. توجه: فهرست کردن صدها گزینشگر CSS یا فهرست کردن گزینشگرهای CSS که صدها بار در صفحه مطابقت دارند می‌تواند سرعت وب‌سایت‌ها را کاهش دهد.

  • isBookmarked

    مقدار منطقی اختیاری

    ‫Chrome نسخه ۴۵ و بالاتر

    اگر وضعیت نشانک‌گذاری صفحه با مقدار مشخص‌شده برابر باشد، مطابقت دارد. به اجازه نشانک‌ها نیاز دارد.

  • pageUrl

    UrlFilter اختیاری

    اگر شرایط UrlFilter برای نشانی وب سطح بالای صفحه برآورده شود، مطابقت پیدا می‌کند.

RequestContentScript

کنش رویداد بیانی که یک متن محتوا را تزریق می‌کند.

هشدار: این کنش هنوز آزمایشی است و در ساخت‌های پایدار Chrome پشتیبانی نمی‌شود.

مشخصات

  • سازنده

    باطل

    تابع constructor به‌صورت زیر است:

    (arg: RequestContentScript) => {...}

  • allFrames

    مقدار منطقی اختیاری

    آیا متن محتوا در همه قاب‌های صفحه منطبق اجرا می‌شود یا فقط در قاب بالا. پیش‌فرض false است.

  • css

    رشته[] اختیاری

    نام فایل‌های CSS که باید به‌عنوان بخشی از دستورگان محتوا تزریق شوند.

  • js

    رشته[] اختیاری

    نام فایل‌های جاوا اسکریپت که به‌عنوان بخشی از دستورگان محتوا تزریق می‌شوند.

  • matchAboutBlank

    مقدار منطقی اختیاری

    آیا دستورگان محتوا در about:blank و about:srcdoc درج شود یا نه. پیش‌فرض false است.

SetIcon

کنش رویداد بیانی که نماد مربعی n-dip را برای کنش صفحه یا کنش مرورگر افزونه تنظیم می‌کند، درحالی‌که شرایط مربوطه برآورده می‌شود. این کنش را می‌توان بدون اجازه‌های میزبان استفاده کرد، اما افزونه باید کنش صفحه یا مرورگر داشته باشد.

دقیقاً یکی از imageData یا path باید مشخص شود. هر دو فرهنگ لغت‌هایی هستند که تعدادی پیکسل را به یک نمایش تصویری نگاشت می‌کنند. نمایش تصویر در imageData یک شیء ImageData است؛ برای مثال، از عنصر canvas، درحالی‌که نمایش تصویر در path مسیر فایل تصویر نسبت‌به مانیفست افزونه است. اگر scale پیکسل صفحه‌نمایش در یک پیکسل مستقل از دستگاه جا شود، از نماد scale * n استفاده می‌شود. اگر آن مقیاس وجود نداشته باشد، تصویر دیگری به اندازه موردنیاز تغییر اندازه داده می‌شود.

مشخصات

  • سازنده

    باطل

    تابع constructor به‌صورت زیر است:

    (arg: SetIcon) => {...}

  • imageData

    ImageData | object اختیاری

    یا شیء ImageData یا فرهنگ لغت {اندازه -> ImageData} که نشان‌دهنده نمادی است که باید تنظیم شود. اگر نماد به‌عنوان فرهنگ لغت مشخص شده باشد، تصویر استفاده‌شده بسته به تراکم پیکسل صفحه انتخاب می‌شود. اگر تعداد پیکسل‌های تصویری که در یک واحد فضای صفحه جا می‌شود برابر با scale باشد، تصویری با اندازه scale * n انتخاب می‌شود، که در آن n اندازه نماد در رابط کاربری است. حداقل یک تصویر باید مشخص شود. توجه داشته باشید که details.imageData = foo معادل details.imageData = {'16': foo} است.

ShowAction

Chrome 97 و نسخه‌های بالاتر

کنش رویداد بیانی که نوارابزار کنش افزونه را درحالی‌که شرایط مربوطه برآورده می‌شود روی حالت فعال تنظیم می‌کند. این کنش را می‌توان بدون اجازه‌های میزبان استفاده کرد. اگر افزونه اجازه activeTab را داشته باشد، کلیک کردن روی کنش صفحه دسترسی به زبانه فعال را اعطا می‌کند.

در صفحاتی که شرایط برآورده نمی‌شود، کنش نوارابزار افزونه خاکستری خواهد بود و با کلیک کردن روی آن، منو زمینه‌ای باز می‌شود و کنش راه‌اندازی نمی‌شود.

مشخصات

ShowPageAction

از Chrome 97 منسوخ شده است

لطفاً از declarativeContent.ShowAction استفاده کنید.

کنش رویداد بیانی که کنش صفحه افزونه را درحالی‌که شرایط مربوطه برآورده می‌شود روی حالت فعال تنظیم می‌کند. این کنش را می‌توان بدون اجازه‌های میزبان استفاده کرد، اما افزونه باید کنش صفحه داشته باشد. اگر افزونه اجازه activeTab را داشته باشد، کلیک کردن روی کنش صفحه دسترسی به زبانه فعال را اعطا می‌کند.

در صفحاتی که شرایط برآورده نمی‌شود، کنش نوارابزار افزونه خاکستری خواهد بود و با کلیک کردن روی آن، منو زمینه‌ای باز می‌شود و کنش راه‌اندازی نمی‌شود.

مشخصات

رویدادها

onPageChanged

Declarative Event API را که شامل addRules،‏ removeRules، و getRules است ارائه می‌دهد.

وضعیت