refresh date: 2026-09-25 robots: noindex
شرح
فضای نام chrome.events حاوی انواع رایجی است که میاناهای برنامهسازی کاربردی برای ارسال رویدادها استفاده میکنند تا وقتی اتفاق جالبی میافتد به شما اطلاع دهند.
Event شیئی است که به شما امکان میدهد وقتی اتفاق جالبی میافتد مطلع شوید. در اینجا
نمونهای از استفاده از رویداد chrome.alarms.onAlarm برای دریافت اعلان در هر زمان که زنگ هشدار منقضی شده است آورده شده است:
chrome.alarms.onAlarm.addListener(function(alarm) {
appendToLog('alarms.onAlarm --'
+ ' name: ' + alarm.name
+ ' scheduledTime: ' + alarm.scheduledTime);
});
همانطور که در مثال نشان داده شده است، بااستفاده از addListener() برای اعلان ثبتنام میکنید. متغیر مستقل
addListener() همیشه تابعی است که برای رسیدگی به رویداد تعریف میکنید، اما پارامترهای
تابع به رویدادی که به آن رسیدگی میکنید بستگی دارد. با بررسی مستندات alarms.onAlarm،
میتوانید ببینید که تابع یک پارامتر واحد دارد: یک شیء alarms.Alarm که جزئیاتی
درباره زنگ هشدار سپریشده دارد.
نمونههای میاناهای برنامهسازی کاربردی که از «رویدادها» استفاده میکنند: alarms، i18n، identity، runtime. اکثر chrome APIs این کار را میکنند.
مدیران رویداد اظهاری
گردانندههای رویداد اعلانی ابزاری برای تعریف قوانین متشکل از شرایط و کنشهای اعلانی ارائه میدهند. شرایط بهجای موتور جاوا اسکریپت در مرورگر ارزیابی میشود که این امر تأخیر رفتوبرگشت را کاهش میدهد و کارایی بسیار بالایی را ممکن میسازد.
از گردانندههای رویداد اعلانی برای مثال در Declarative Web Request API و Declarative Content API استفاده میشود. این صفحه مفاهیم اساسی همه گردانندههای رویداد اعلانی را شرح میدهد.
قوانین
سادهترین قانون ممکن شامل یک یا چند شرط و یک یا چند کنش است:
var rule = {
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
اگر هریک از شرایط برآورده شود، همه کنشها اجرا میشود.
علاوهبر شرایط و کنشها، میتوانید به هر قانون یک شناسه اختصاص دهید که لغو ثبت قوانین قبلاً ثبتشده را سادهتر میکند، و همچنین اولویتی برای تعریف تقدم بین قوانین. اولویتها فقط درصورتی درنظر گرفته میشوند که قوانین با یکدیگر تداخل داشته باشند یا لازم باشد به ترتیب خاصی اجرا شوند. کنشها بهترتیب نزولی اولویت قانونهایشان اجرا میشوند.
var rule = {
id: "my rule", // optional, will be generated if not set.
priority: 100, // optional, defaults to 100.
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
اشیای رویداد
اشیاء رویداد ممکن است از قوانین پشتیبانی کنند. این شیءهای رویداد هنگام وقوع رویدادها تابع بازخوانی را فراخوانی نمیکنند، بلکه آزمایش میکنند که آیا قانون ثبتشدهای حداقل یک شرط برآوردهشده دارد یا نه و کنشهای مرتبط با این قانون را اجرا میکنند. اشیاء رویداد که از API اعلانی پشتیبانی میکنند سه روش مرتبط دارند: events.Event.addRules، events.Event.removeRules، و events.Event.getRules.
افزودن قانون
برای افزودن قانون، تابع addRules() شیء رویداد را فراخوانی کنید. این تابع آرایهای از نمونههای قانون را بهعنوان پارامتر اول خود و یک تابع بازخوانی را که پساز تکمیل فراخوانی میشود دریافت میکند.
var rule_list = [rule1, rule2, ...];
function addRules(rule_list, function callback(details) {...});
اگر قوانین با موفقیت درج شده باشند، پارامتر details حاوی آرایهای از قوانین درجشده است
که به همان ترتیبی که در rule_list ارسالشده ظاهر میشوند، جایی که پارامترهای اختیاری id و
priority با مقادیر تولیدشده پر شدهاند. اگر قانونی نامعتبر باشد، مثلاً بهدلیل داشتن
شرط یا کنش نامعتبر، هیچکدام از قوانین اضافه نمیشوند و متغیر runtime.lastError
هنگام فراخوانی تابع بازخوانی تنظیم میشود. هر قانون در rule_list باید حاوی شناسه یکتایی باشد که درحالحاضر توسط قانون دیگری استفاده نمیشود یا شناسه خالی باشد.
درحال برداشتن قوانین
برای برداشتن قوانین، تابع removeRules() را فراخوانی کنید. این روش یک آرایه اختیاری از شناسههای قانون را بهعنوان پارامتر اول و یک تابع بازخوانی را بهعنوان پارامتر دوم میپذیرد.
var rule_ids = ["id1", "id2", ...];
function removeRules(rule_ids, function callback() {...});
اگر rule_ids آرایهای از شناسهها باشد، همه قوانینی که شناسههای فهرستشده در آرایه را دارند برداشته میشوند. اگر rule_ids شناسهای را فهرست کند که ناشناخته است، این شناسه بدون اطلاع نادیده گرفته میشود. اگر
rule_ids undefined باشد، همه قوانین ثبتشده این افزونه برداشته میشود. تابع
callback() هنگام برداشته شدن قوانین فراخوانده میشود.
درحال بازیابی قوانین
برای بازیابی فهرست قوانین ثبتشده فعلی، تابع getRules() را فراخوانی کنید. این تابع یک آرایه اختیاری از شناسههای قانون با همان معناشناسی removeRules و یک تابع بازخوانی را میپذیرد.
var rule_ids = ["id1", "id2", ...];
function getRules(rule_ids, function callback(details) {...});
پارامتر details که به تابع callback() ارسال شده است به آرایهای از قوانین اشاره دارد که شامل
پارامترهای اختیاری تکمیلشده است.
عملکرد
برای دستیابی به حداکثر عملکرد، باید دستورالعملهای زیر را درنظر داشته باشید.
ثبت و لغو ثبت قوانین بهصورت انبوه. پساز هر ثبتنام یا لغو ثبتنام، Chrome باید ساختارهای داده داخلی را بهروز کند. این بهروزرسانی عملیات پرهزینهای است.
بهجای:
var rule1 = {...};
var rule2 = {...};
chrome.declarativeWebRequest.onRequest.addRules([rule1]);
chrome.declarativeWebRequest.onRequest.addRules([rule2]);
ترجیح:
var rule1 = {...};
var rule2 = {...};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
تطابق زیررشته را بر عبارات باقاعده در events.UrlFilter ترجیح دهید. تطبیق مبتنی بر زیررشته بسیار سریع است.
بهجای:
var match = new chrome.declarativeWebRequest.RequestMatcher({
url: {urlMatches: "example.com/[^?]*foo" } });
ترجیح:
var match = new chrome.declarativeWebRequest.RequestMatcher({
url: {hostSuffix: "example.com", pathContains: "foo"} });
اگر قوانین زیادی دارید که کنشهای یکسانی دارند، قوانین را در یک قانون ادغام کنید. قانونها بهمحض برآورده شدن یک شرط، کنشهایشان را راهاندازی میکنند. این کار سرعت مطابقت دادن را افزایش میدهد و مصرف حافظه را برای مجموعههای کنش تکراری کاهش میدهد.
بهجای:
var condition1 = new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'example.com' } });
var condition2 = new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'foobar.com' } });
var rule1 = { conditions: [condition1],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
var rule2 = { conditions: [condition2],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
ترجیح:
var rule = { conditions: [condition1, condition2],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
chrome.declarativeWebRequest.onRequest.addRules([rule]);
رویدادهای فیلترشده
رویدادهای فیلترشده سازوکاری است که به شنوندگان اجازه میدهد زیرمجموعهای از رویدادهای موردعلاقهشان را مشخص کنند. شنوندهای که از فیلتر استفاده میکند برای رویدادهایی که از فیلتر عبور نمیکنند فراخوانی نمیشود، که این امر کد شنونده را توصیفیتر و کارآمدتر میکند. نیازی نیست کارگر سرویس برای رسیدگی به رویدادهایی که به آن مربوط نیست بیدار شود.
رویدادهای فیلترشده برای این طراحی شدهاند که امکان انتقال از کد فیلتر کردن دستی مانند این را فراهم کنند:
chrome.webNavigation.onCommitted.addListener(function(e) {
if (hasHostSuffix(e.url, 'google.com') ||
hasHostSuffix(e.url, 'google.com.au')) {
// ...
}
});
به این:
chrome.webNavigation.onCommitted.addListener(function(e) {
// ...
}, {url: [{hostSuffix: 'google.com'},
{hostSuffix: 'google.com.au'}]});
رویدادها از فیلترهای خاصی پشتیبانی میکنند که برای آن رویداد معنیدار هستند. فهرست فیلترهایی که رویداد پشتیبانی میکند در اسناد آن رویداد در بخش «فیلترها» فهرست خواهد شد.
هنگام مطابقت دادن نشانیهای وب (مانند مثال بالا)، فیلترهای رویداد از همان قابلیتهای مطابقت دادن نشانی وب که با events.UrlFilter قابلبیان است پشتیبانی میکنند، بهجز مطابقت دادن طرح و درگاه.
انواع
Event
شیئی که امکان افزودن و برداشتن شنوندگان را برای رویداد Chrome فراهم میکند.
مشخصات
-
addListener
باطل کردن
فراخوان برگشتی شنونده رویداد را برای رویدادی ثبت میکند.
تابع
addListenerبهصورت زیر است:(callback: H) => {...}
-
تماس برگشتی
H
وقتی رویدادی رخ میدهد فراخوانی میشود. پارامترهای این تابع به نوع رویداد بستگی دارد.
-
-
addRules
باطل کردن
قوانین را برای رسیدگی به رویدادها ثبت میکند.
تابع
addRulesبهصورت زیر است:(rules: Rule<anyany>[], callback?: function) => {...}
-
getRules
باطل کردن
قوانین ثبتشده فعلی را برمیگرداند.
تابع
getRulesبهصورت زیر است:(ruleIdentifiers?: string[], callback: function) => {...}
-
hasListener
باطل کردن
تابع
hasListenerبهصورت زیر است:(callback: H) => {...}
-
تماس برگشتی
H
شنوندهای که وضعیت ثبتنام او باید آزمایش شود.
-
returns
بولی
اگر callback برای رویداد ثبت شده باشد، True است.
-
-
hasListeners
باطل کردن
تابع
hasListenersبهصورت زیر است:() => {...}-
returns
بولی
اگر هرکدام از شنوندگان رویداد برای رویداد ثبت شده باشند، درست است.
-
-
removeListener
باطل کردن
لغو ثبت callback شنونده رویداد از رویداد.
تابع
removeListenerبهصورت زیر است:(callback: H) => {...}
-
تماس برگشتی
H
شنوندهای که باید لغو ثبتنام شود.
-
-
removeRules
باطل کردن
قوانین ثبتشده فعلی را لغو ثبت میکند.
تابع
removeRulesبهصورت زیر است:(ruleIdentifiers?: string[], callback?: function) => {...}
-
ruleIdentifiers
رشته[] اختیاری
اگر آرایهای ارسال شود، فقط قوانینی که شناسههایشان در این آرایه وجود دارد لغو ثبت میشوند.
-
تماس برگشتی
تابع اختیاری
پارامتر
callbackبهصورت زیر است:() => void
-
Rule
شرح قانون اعلانی برای رسیدگی به رویدادها.
مشخصات
-
کنشها
any[]
فهرست کنشهایی که درصورت برآورده شدن یکی از شرایط راهاندازی میشوند.
-
عارضهها
any[]
فهرست شرایطی که میتواند کنشها را راهاندازی کند.
-
id
رشته اختیاری
شناسه اختیاری که امکان ارجاع به این قانون را فراهم میکند.
-
اولویتدار
شماره اختیاری
اولویت اختیاری این قانون. پیشفرض ۱۰۰ است.
-
برچسبها
رشته[] اختیاری
از برچسبها میتوان برای حاشیهنویسی قانونها و انجام عملیات روی مجموعهای از قانونها استفاده کرد.
UrlFilter
نشانیهای وب را براساس معیارهای مختلف فیلتر میکند. فیلتر کردن رویداد را ببینید. همه معیارها حروفحساس هستند.
مشخصات
-
cidrBlocks
رشته[] اختیاری
Chrome نسخه ۱۲۳ به بالااگر بخش میزبان نشانی وب یک نشانی IP باشد و در هریک از بلوکهای CIDR مشخصشده در آرایه موجود باشد، مطابقت دارد.
-
hostContains
رشته اختیاری
اگر نام میزبان نشانی وب حاوی رشته مشخصشدهای باشد، مطابقت دارد. برای آزمایش اینکه آیا مؤلفه نام میزبان پیشوند «foo» دارد یا نه، از hostContains: '.foo' استفاده کنید. این با «www.foobar.com» و «foo.com» مطابقت دارد، زیرا یک نقطه ضمنی به ابتدای نام میزبان اضافه شده است. بهطور مشابه، میتوان از hostContains برای مطابقت با پسوند مؤلفه (foo.) و مطابقت دقیق با مؤلفهها (.foo.) استفاده کرد. تطبیق پسوند و تطبیق دقیق برای آخرین مؤلفهها باید بهطور جداگانه بااستفاده از hostSuffix انجام شود، زیرا هیچ نقطه ضمنیای به انتهای نام میزبان اضافه نمیشود.
-
hostEquals
رشته اختیاری
اگر نام میزبان نشانی وب با رشته مشخصشده برابر باشد، مطابقت دارد.
-
hostPrefix
رشته اختیاری
اگر نام میزبان نشانی وب با رشته مشخصشدهای شروع شود، مطابقت دارد.
-
hostSuffix
رشته اختیاری
اگر نام میزبان نشانی وب با رشته مشخصشدهای بهپایان برسد، مطابقت دارد.
-
originAndPathMatches
رشته اختیاری
اگر نشانی وب بدون بخش پُرسمان و شناسه قطعه با عبارت باقاعده مشخصی مطابقت داشته باشد، مطابقت دارد. اگر شمارههای درگاه با شماره درگاه پیشفرض مطابقت داشته باشند، از نشانی وب حذف میشوند. عبارتهای باقاعده از نحو RE2 استفاده میکنند.
-
pathContains
رشته اختیاری
اگر بخش مسیر نشانی وب حاوی رشته مشخصشدهای باشد، مطابقت دارد.
-
pathEquals
رشته اختیاری
اگر بخش مسیر نشانی وب با رشته مشخصشده برابر باشد، مطابقت دارد.
-
pathPrefix
رشته اختیاری
اگر بخش مسیر نشانی وب با رشته مشخصشدهای شروع شود، مطابقت دارد.
-
pathSuffix
رشته اختیاری
اگر بخش مسیر نشانی وب با رشته مشخصشدهای بهپایان برسد، مطابقت دارد.
-
درگاهها
(number | number[])[] اختیاری
اگر درگاه نشانی وب در هرکدام از فهرستهای درگاه مشخصشده وجود داشته باشد، مطابقت دارد. برای مثال،
[80, 443, [1000, 1200]]با همه درخواستها در درگاه ۸۰، ۴۴۳، و در محدوده ۱۰۰۰-۱۲۰۰ مطابقت دارد. -
queryContains
رشته اختیاری
اگر بخش پُرسمان نشانی وب حاوی رشته مشخصشدهای باشد، مطابقت دارد.
-
queryEquals
رشته اختیاری
اگر بخش پُرسمان نشانی وب با رشته مشخصشده برابر باشد، مطابقت دارد.
-
queryPrefix
رشته اختیاری
اگر بخش پُرسمان نشانی وب با رشته مشخصشدهای شروع شود، مطابقت دارد.
-
querySuffix
رشته اختیاری
اگر بخش پُرسمان نشانی وب با رشته مشخصشدهای بهپایان برسد، مطابقت دارد.
-
طرحها
رشته[] اختیاری
اگر طرحواره نشانی وب با هرکدام از طرحوارههای مشخصشده در آرایه برابر باشد، مطابقت دارد.
-
urlContains
رشته اختیاری
اگر نشانی وب (بدون شناسه بخش) حاوی رشته مشخصشدهای باشد، مطابقت دارد. اگر شمارههای درگاه با شماره درگاه پیشفرض مطابقت داشته باشند، از نشانی وب حذف میشوند.
-
urlEquals
رشته اختیاری
اگر نشانی وب (بدون شناسه قطعه) با رشته مشخصشده برابر باشد، مطابقت دارد. اگر شمارههای درگاه با شماره درگاه پیشفرض مطابقت داشته باشند، از نشانی وب حذف میشوند.
-
urlMatches
رشته اختیاری
اگر نشانی وب (بدون شناسه قطعه) با عبارت باقاعده مشخصشدهای مطابقت داشته باشد، مطابقت دارد. اگر شمارههای درگاه با شماره درگاه پیشفرض مطابقت داشته باشند، از نشانی وب حذف میشوند. عبارتهای باقاعده از نحو RE2 استفاده میکنند.
-
urlPrefix
رشته اختیاری
اگر نشانی وب (بدون شناسه قطعه) با رشته مشخصشدهای شروع شود، مطابقت دارد. اگر شمارههای درگاه با شماره درگاه پیشفرض مطابقت داشته باشند، از نشانی وب حذف میشوند.
-
urlSuffix
رشته اختیاری
اگر نشانی وب (بدون شناسه قطعه) با رشته مشخصشدهای بهپایان برسد، مطابقت دارد. اگر شمارههای درگاه با شماره درگاه پیشفرض مطابقت داشته باشند، از نشانی وب حذف میشوند.