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.
معالِجات الأحداث الوصفية
توفّر معالِجات الأحداث التعريفية وسيلة لتحديد القواعد التي تتألف من شروط وإجراءات تعريفية. يتم تقييم الشروط في المتصفّح بدلاً من محرّك JavaScript، ما يقلّل من وقت الاستجابة ويسمح بتحقيق كفاءة عالية جدًا.
يتم استخدام معالِجات الأحداث التعريفية على سبيل المثال في 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 */ ]
};
عناصر الحدث
قد تتيح عناصر الأحداث استخدام القواعد. لا تستدعي كائنات الأحداث هذه دالّة رد الاتصال عند وقوع الأحداث، ولكنها تختبر ما إذا كانت أي قاعدة مسجَّلة تستوفي شرطًا واحدًا على الأقل وتنفّذ الإجراءات المرتبطة بهذه القاعدة. تتضمّن عناصر الأحداث التي تتوافق مع واجهة برمجة التطبيقات التعريفية ثلاث طرق ذات صلة: 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'}]});
تتيح الأحداث فلاتر معيّنة ذات صلة بها. سيتم إدراج قائمة الفلاتر التي يتيحها الحدث في مستندات هذا الحدث في قسم "الفلاتر".
عند مطابقة عناوين URL (كما في المثال أعلاه)، تتيح فلاتر الأحداث إمكانات مطابقة عناوين URL نفسها التي يمكن التعبير عنها باستخدام events.UrlFilter، باستثناء مطابقة المخطط والمنفذ.
الأنواع
Event
عنصر يسمح بإضافة أدوات معالجة أحداث Chrome وإزالتها
الخصائص
-
addListener
void
يتم تسجيل دالة رد اتصال لمتتبِّع الأحداث في حدث معيّن.
تبدو الدالة
addListenerعلى النحو التالي:(callback: H) => {...}
-
callback
H
يتم استدعاؤها عند وقوع حدث. تعتمد مَعلمات هذه الدالة على نوع الحدث.
-
-
addRules
void
يتيح هذا الإذن تسجيل القواعد لمعالجة الأحداث.
تبدو الدالة
addRulesعلى النحو التالي:(rules: Rule<anyany>[], callback?: function) => {...}
-
getRules
void
تعرض هذه الطريقة القواعد المسجَّلة حاليًا.
تبدو الدالة
getRulesعلى النحو التالي:(ruleIdentifiers?: string[], callback: function) => {...}
-
hasListener
void
تبدو الدالة
hasListenerعلى النحو التالي:(callback: H) => {...}
-
callback
H
أداة معالجة الحدث التي سيتم اختبار حالة تسجيلها
-
returns
قيمة منطقية
تكون القيمة "صحيح" إذا تم تسجيل callback في الحدث.
-
-
hasListeners
void
تبدو الدالة
hasListenersعلى النحو التالي:() => {...}-
returns
قيمة منطقية
تكون القيمة "صحيح" إذا تم تسجيل أي متتبِّعات أحداث للحدث.
-
-
removeListener
void
لإلغاء تسجيل دالة ردّ نداء لمتتبِّع الأحداث من حدث معيّن.
تبدو الدالة
removeListenerعلى النحو التالي:(callback: H) => {...}
-
callback
H
أداة معالجة الحدث التي سيتم إلغاء تسجيلها
-
-
removeRules
void
لإلغاء تسجيل القواعد المسجَّلة حاليًا
تبدو الدالة
removeRulesعلى النحو التالي:(ruleIdentifiers?: string[], callback?: function) => {...}
-
ruleIdentifiers
string[] اختياري
في حال تمرير مصفوفة، يتم إلغاء تسجيل القواعد التي تحتوي على معرّفات في هذه المصفوفة فقط.
-
callback
function اختياري
تظهر المَعلمة
callbackعلى النحو التالي:() => void
-
Rule
وصف لقاعدة تعريفية للتعامل مع الأحداث
الخصائص
-
الإجراءات
any[]
قائمة بالإجراءات التي يتم تنفيذها في حال استيفاء أحد الشروط
-
الحالات الطبية
any[]
قائمة بالشروط التي يمكن أن تؤدي إلى تنفيذ الإجراءات
-
id
string اختياري
معرّف اختياري يسمح بالإشارة إلى هذه القاعدة
-
الحملة
number اختيارية
أولوية اختيارية لهذه القاعدة القيمة التلقائية هي 100.
-
الإشارات
string[] اختياري
يمكن استخدام العلامات لإضافة تعليقات توضيحية إلى القواعد وتنفيذ العمليات على مجموعات من القواعد.
UrlFilter
لفلترة عناوين URL وفقًا لمعايير مختلفة اطّلِع على فلترة الأحداث. جميع المعايير حسّاسة لحالة الأحرف.
الخصائص
-
cidrBlocks
string[] اختياري
الإصدار 123 من Chrome والإصدارات الأحدثتتم المطابقة إذا كان جزء المضيف من عنوان URL هو عنوان IP ومضمّنًا في أي من مجموعات CIDR المحدّدة في الصفيفة.
-
hostContains
string اختياري
تحدث المطابقة إذا كان اسم مضيف عنوان URL يحتوي على سلسلة محدّدة. لاختبار ما إذا كان مكوّن اسم المضيف يحتوي على البادئة "foo"، استخدِم hostContains: ".foo". يتطابق هذا مع "www.foobar.com" و"foo.com"، لأنّه تتم إضافة نقطة ضمنية في بداية اسم المضيف. وبالمثل، يمكن استخدام hostContains للمطابقة مع لاحقة المكوّن ('foo.') وللمطابقة التامة مع المكوّنات ('.foo.'). يجب إجراء المطابقة التامة ومطابقة اللاحقة للمكوّنات الأخيرة بشكل منفصل باستخدام hostSuffix، لأنّه لا تتم إضافة نقطة ضمنية في نهاية اسم المضيف.
-
hostEquals
string اختياري
تتم المطابقة إذا كان اسم مضيف عنوان URL يساوي سلسلة محدّدة.
-
hostPrefix
string اختياري
تتم المطابقة إذا كان اسم المضيف لعنوان URL يبدأ بسلسلة محدّدة.
-
hostSuffix
string اختياري
تتم المطابقة إذا كان اسم المضيف لعنوان URL ينتهي بسلسلة محدّدة.
-
originAndPathMatches
string اختياري
تتم المطابقة إذا كان عنوان URL بدون جزء طلب البحث ومعرّف الجزء يتطابق مع تعبير عادي محدّد. تتم إزالة أرقام المنافذ من عنوان URL إذا كانت تتطابق مع رقم المنفذ التلقائي. تستخدم التعبيرات العادية بنية RE2.
-
pathContains
string اختياري
تتم المطابقة إذا كان جزء المسار من عنوان URL يحتوي على سلسلة محدّدة.
-
pathEquals
string اختياري
تتم المطابقة إذا كان جزء المسار من عنوان URL يساوي سلسلة محدّدة.
-
pathPrefix
string اختياري
تتم المطابقة إذا كان جزء المسار من عنوان URL يبدأ بسلسلة محدّدة.
-
pathSuffix
string اختياري
تتم المطابقة إذا كان جزء المسار من عنوان URL ينتهي بسلسلة محدّدة.
-
ports
(number | number[])[] اختيارية
تتم المطابقة إذا كان منفذ عنوان URL مضمّنًا في أي من قوائم المنافذ المحدّدة. على سبيل المثال، يتطابق
[80, 443, [1000, 1200]]مع جميع الطلبات على المنفذ 80 و443 وفي النطاق 1000-1200. -
queryContains
string اختياري
تتم المطابقة إذا كان جزء طلب البحث في عنوان URL يحتوي على سلسلة محدّدة.
-
queryEquals
string اختياري
تتم المطابقة إذا كان جزء طلب البحث في عنوان URL يساوي سلسلة معيّنة.
-
queryPrefix
string اختياري
تتم المطابقة إذا كان جزء طلب البحث في عنوان URL يبدأ بسلسلة محدّدة.
-
querySuffix
string اختياري
تتم المطابقة إذا كان جزء طلب البحث في عنوان URL ينتهي بسلسلة محدّدة.
-
المخطّطات
string[] اختياري
تتم المطابقة إذا كان مخطط عنوان URL مساويًا لأي من المخططات المحدّدة في الصفيف.
-
urlContains
string اختياري
تتم المطابقة إذا كان عنوان URL (بدون معرّف الجزء) يحتوي على سلسلة محدّدة. تتم إزالة أرقام المنافذ من عنوان URL إذا كانت تتطابق مع رقم المنفذ التلقائي.
-
urlEquals
string اختياري
تتم المطابقة إذا كان عنوان URL (بدون معرّف الجزء) يساوي سلسلة محدّدة. تتم إزالة أرقام المنافذ من عنوان URL إذا كانت تتطابق مع رقم المنفذ التلقائي.
-
urlMatches
string اختياري
تتم المطابقة إذا كان عنوان URL (بدون معرّف الجزء) يطابق تعبيرًا عاديًا محدّدًا. تتم إزالة أرقام المنافذ من عنوان URL إذا كانت تتطابق مع رقم المنفذ التلقائي. تستخدم التعبيرات العادية بنية RE2.
-
urlPrefix
string اختياري
تتم المطابقة إذا كان عنوان URL (بدون معرّف الجزء) يبدأ بسلسلة محدّدة. تتم إزالة أرقام المنافذ من عنوان URL إذا كانت تتطابق مع رقم المنفذ التلقائي.
-
urlSuffix
string اختياري
تتم المطابقة إذا كان عنوان URL (بدون معرّف الجزء) ينتهي بسلسلة معيّنة. تتم إزالة أرقام المنافذ من عنوان URL إذا كانت تتطابق مع رقم المنفذ التلقائي.