תיאור
מרחב השמות chrome.events
מכיל סוגים נפוצים של ממשקי API ששולחים אירועים כדי ליידע אותך על משהו מעניין.
מושגים ושימוש
Event
הוא אובייקט שמאפשר לקבל התראה כשמתרחש משהו מעניין. הנה
דוגמה לשימוש באירוע chrome.alarms.onAlarm
כדי לקבל התראה בכל פעם שחולפת התראה:
chrome.alarms.onAlarm.addListener((alarm) => {
appendToLog(`alarms.onAlarm -- name: ${alarm.name}, scheduledTime: ${alarm.scheduledTime}`);
});
כמו שרואים בדוגמה, נרשמים לקבלת התראות באמצעות addListener()
. הארגומנט
addListener()
הוא תמיד פונקציה שאתם מגדירים לטיפול באירוע, אבל הפרמטרים של
תלויים באירוע שבו אתם מטפלים. מתבצעת בדיקה במסמכי התיעוד של alarms.onAlarm
,
אפשר לראות שלפונקציה יש פרמטר אחד: אובייקט alarms.Alarm
שמכיל פרטים
על ההתראה שחלפה.
דוגמאות לממשקי API באמצעות אירועים: התראות, i18n, זהות, זמן ריצה. רוב Chrome ממשקי API כן.
מטפלים הצהרתיים באירועים
הגורמים שמטפלים באירועים הצהרתיים מספקים אמצעי להגדרת כללים שמורכבים מתנאים הצהרתיים ופעולות. הערכת התנאים מתבצעת בדפדפן ולא במנוע JavaScript, ולכן זמן אחזור הלוך ושוב שמאפשר יעילות גבוהה מאוד.
משתמשים בגורמים הצהרתיים לטיפול באירועים, לדוגמה, Declarative Content API בדף הזה מתוארים המושגים הבסיסיים של כל האירועים המוצהרים של ה-handlers שלו.
כללים
הכלל הפשוט ביותר האפשרי כולל תנאי אחד או יותר ופעולה אחת או יותר:
const rule = {
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
אם אחד מהתנאים מתקיים, כל הפעולות מבוצעות.
בנוסף לתנאים ולפעולות, אפשר להגדיר לכל כלל מזהה כדי לפשט את התהליך ביטול הרישום של כללים שנרשמו בעבר, ועדיפות להגדרת קדימות בין כללים. יש להתייחס לעדיפויות רק אם יש סתירה בין כללים או שצריך לבצע אותם הזמנה. הפעולות מתבצעות בסדר יורד, לפי העדיפות של הכללים שלהן.
const 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()
של אובייקט האירוע. היא לוקחת מערך של מופעי כללים
בתור הפרמטר הראשון ופונקציית קריאה חוזרת שמופעלת בסיום הפעולה.
const rule_list = [rule1, rule2, ...];
addRules(rule_list, (details) => {...});
אם הכללים נוספו בהצלחה, הפרמטר details
יכיל מערך של כללים שנוספו
מופיעות באותו סדר כמו הפונקציה rule_list
שהועברה, שבה הפרמטרים האופציונליים id
וגם
priority
מולאו בערכים שנוצרו. אם כלל כלשהו לא חוקי, לדוגמה כי הוא מכיל
תנאי או פעולה לא חוקיים, לא נוסף אף אחד מהכללים והמשתנה runtime.lastError
מוגדרת כשמתבצעת קריאה לפונקציית הקריאה החוזרת. כל כלל ב-rule_list
חייב להכיל ערך ייחודי של
שלא נמצא בשימוש בכלל אחר או במזהה ריק.
הסרת כללים
כדי להסיר כללים, צריך להפעיל את הפונקציה removeRules()
. היא מקבלת מערך אופציונלי של מזהי כללים
בתור הפרמטר הראשון שלו, ופונקציית קריאה חוזרת כפרמטר השני.
const rule_ids = ["id1", "id2", ...];
removeRules(rule_ids, () => {...});
אם rule_ids
הוא מערך של מזהים, כל הכללים עם מזהים שרשומים במערך הם
הוסר. אם ב-rule_ids
מופיע מזהה שאינו ידוע, המערכת תתעלם מהמזהה הזה ללא הודעה. אם המיקום
rule_ids
הוא undefined
, כל הכללים הרשומים של התוסף הזה הוסרו. callback()
תתבצע קריאה לפונקציה כאשר הכללים הוסרו.
אחזור כללים
כדי לאחזר רשימה של כללים רשומים, צריך להפעיל את הפונקציה getRules()
. הוא מקבל
מערך אופציונלי של מזהי כללים עם סמנטיקה זהה לזו של removeRules()
ופונקציית קריאה חוזרת.
const rule_ids = ["id1", "id2", ...];
getRules(rule_ids, (details) => {...});
הפרמטר details
שמועבר לפונקציה callback()
מתייחס למערך כללים כולל
מולאו פרמטרים אופציונליים.
ביצועים
כדי להשיג ביצועים מקסימליים, חשוב לזכור את ההנחיות הבאות.
רישום וביטול רישום בכמות גדולה של כללים. לאחר כל רישום או ביטול רישום, Chrome צריך: לעדכן מבני נתונים פנימיים. העדכון הזה הוא פעולה יקרה.
const rule1 = {...}; const rule2 = {...}; chrome.declarativeWebRequest.onRequest.addRules([rule1]); chrome.declarativeWebRequest.onRequest.addRules([rule2]);
const rule1 = {...}; const rule2 = {...}; chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
העדפת התאמה של מחרוזות משנה על פני ביטויים רגולריים ב-events.UrlFilter. התאמה שמבוססת על מחרוזות משנה מתבצעת במהירות רבה.
const match = new chrome.declarativeWebRequest.RequestMatcher({ url: {urlMatches: "example.com/[^?]*foo" } });
const match = new chrome.declarativeWebRequest.RequestMatcher({ url: {hostSuffix: "example.com", pathContains: "foo"} });
אם יש כללים רבים שיש להם פעולות זהות, אפשר למזג את הכללים לפעולה אחת. הכללים מפעילים את הפעולות שלהם ברגע שתנאי אחד מתקיים. הפעולה הזו האצת התאמה ומפחיתה את צריכת הזיכרון עבור קבוצות פעולות כפולות.
const condition1 = new chrome.declarativeWebRequest.RequestMatcher({ url: { hostSuffix: 'example.com' } }); const condition2 = new chrome.declarativeWebRequest.RequestMatcher({ url: { hostSuffix: 'foobar.com' } }); const rule1 = { conditions: [condition1], actions: [new chrome.declarativeWebRequest.CancelRequest()] }; const rule2 = { conditions: [condition2], actions: [new chrome.declarativeWebRequest.CancelRequest()] }; chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
const condition1 = new chrome.declarativeWebRequest.RequestMatcher({ url: { hostSuffix: 'example.com' } }); const condition2 = new chrome.declarativeWebRequest.RequestMatcher({ url: { hostSuffix: 'foobar.com' } }); const rule = { conditions: [condition1, condition2], actions: [new chrome.declarativeWebRequest.CancelRequest()] }; chrome.declarativeWebRequest.onRequest.addRules([rule]);
אירועים מסוננים
אירועים מסוננים הם מנגנון שמאפשר למאזינים לציין קבוצת משנה של אירועים שבהם אתם מעוניינים. האזנה שעושה שימוש במסנן לא תופעל לאירועים שלא עוברים את שהופך את קוד ההאזנה להצהרתי ויעיל יותר. צריכים של service worker לא יתעוררו לטפל באירועים שלא חשובים להם.
אירועים מסוננים נועדו לאפשר מעבר מקוד סינון ידני.
chrome.webNavigation.onCommitted.addListener((event) => { if (hasHostSuffix(event.url, 'google.com') || hasHostSuffix(event.url, 'google.com.au')) { // ... } });
chrome.webNavigation.onCommitted.addListener((event) => { // ... }, {url: [{hostSuffix: 'google.com'}, {hostSuffix: 'google.com.au'}]});
אירועים תומכים במסננים ספציפיים שיש להם משמעות לאותו אירוע. רשימת המסננים שאירוע יופיעו במסמכי התיעוד של האירוע ב'מסננים'. .
כאשר כתובות URL תואמות (כמו בדוגמה שלמעלה), מסנני האירועים תומכים באותה התאמה של כתובת URL
יכולות שאפשר להביע באמצעות events.UrlFilter
, מלבד התאמה לסכמה וליציאות.
סוגים
Event
אובייקט שמאפשר להוסיף ולהסיר מאזינים לאירוע ב-Chrome.
מאפיינים
-
addListener
ריק
רושם callback של event listener לאירוע.
הפונקציה
addListener
נראית כך:(callback: H) => {...}
-
קריאה חוזרת (callback)
H
מופעלת כשמתרחש אירוע. הפרמטרים של הפונקציה הזו תלויים בסוג האירוע.
-
-
addRules
ריק
רושם כללים לטיפול באירועים.
הפונקציה
addRules
נראית כך:(rules: Rule<anyany>[], callback?: function) => {...}
-
getRules
ריק
מחזירה את הכללים הרשומים כרגע.
הפונקציה
getRules
נראית כך:(ruleIdentifiers?: string[], callback: function) => {...}
-
hasListener
ריק
הפונקציה
hasListener
נראית כך:(callback: H) => {...}
-
קריאה חוזרת (callback)
H
המאזינים שסטטוס הרישום שלו ייבדק.
-
החזרות
בוליאני
הערך הוא True אם callback רשום לאירוע.
-
-
hasListeners
ריק
הפונקציה
hasListeners
נראית כך:() => {...}
-
החזרות
בוליאני
הערך הוא True אם יש פונקציות event listener רשומים לאירוע.
-
-
removeListener
ריק
ביטול ההרשמה של קריאה חוזרת לאירוע של האזנה לאירוע.
הפונקציה
removeListener
נראית כך:(callback: H) => {...}
-
קריאה חוזרת (callback)
H
מאזינים שהרישום שלהם יבוטל.
-
-
removeRules
ריק
מבטל את הרישום של כללים שרשומים כרגע.
הפונקציה
removeRules
נראית כך:(ruleIdentifiers?: string[], callback?: function) => {...}
-
ruleIdentifiers
string[] אופציונלי
אם מערך מועבר, רק כללים עם מזהים הכלולים במערך הזה לא יירשמו.
-
קריאה חוזרת (callback)
פונקציה אופציונלית
הפרמטר
callback
נראה כך:() => void
-
Rule
תיאור של כלל הצהרתי לטיפול באירועים.
מאפיינים
-
פעולות
כל[]
רשימת הפעולות שיופעלו אם אחד מהתנאים מתקיים.
-
תנאים
כל[]
רשימת תנאים שיכולים להפעיל את הפעולות.
-
id [מזהה]
מחרוזת אופציונלי
מזהה אופציונלי שמאפשר הפניה לכלל הזה.
-
הקמפיין
מספר אופציונלי
העדיפות האופציונלית של הכלל הזה. ברירת המחדל היא 100.
-
תגים
string[] אופציונלי
ניתן להשתמש בתגים כדי להוסיף הערות לכללים ולבצע פעולות בקבוצות של כללים.
UrlFilter
סינון כתובות URL לפי קריטריונים שונים. ראו סינון אירועים. כל הקריטריונים הם תלויי אותיות רישיות.
מאפיינים
-
cidrBlocks
string[] אופציונלי
Chrome 123 ואילךתואם אם החלק המארח של כתובת ה-URL הוא כתובת IP והוא כלול בבלוקי ה-CIDR שצוינו במערך.
-
hostContains
מחרוזת אופציונלי
תואם אם שם המארח של כתובת ה-URL מכיל מחרוזת שצוינה. כדי לבדוק אם לרכיב של שם מארח יש את הקידומת 'foo', צריך להשתמש ב-hostContains: ' .foo'. כתובת זו תואמת ל-'www.foobar.com' ו-'foo.com', כי מתווספת נקודה משתמעת בתחילת שם המארח. באופן דומה, אפשר להשתמש ב-hostContains כדי לבצע התאמה מול הסיומת של הרכיב ('foo.') ולהתאים בדיוק לרכיבים ('.foo.'). צריך לבצע בנפרד התאמה לסיומת ולהתאמה מדויקת לרכיבים האחרונים באמצעות hostSuffix, כי לא נוספה נקודה משתמעת בסוף שם המארח.
-
hostEquals
מחרוזת אופציונלי
תואם אם שם המארח של כתובת ה-URL שווה למחרוזת שצוינה.
-
hostPrefix
מחרוזת אופציונלי
תואם אם שם המארח של כתובת ה-URL מתחיל במחרוזת שצוינה.
-
hostSuffix
מחרוזת אופציונלי
תואם אם שם המארח של כתובת ה-URL מסתיים במחרוזת שצוינה.
-
originAndPathMatches
מחרוזת אופציונלי
תואם אם כתובת ה-URL ללא פלח השאילתה ומזהה המקטע תואמת לביטוי רגולרי שצוין. מספרי היציאות יוסרו מכתובת ה-URL אם הם תואמים למספר היציאה שמוגדר כברירת מחדל. הביטויים הרגולריים משתמשים בתחביר RE2.
-
pathContains
מחרוזת אופציונלי
תואם אם קטע הנתיב של כתובת ה-URL מכיל מחרוזת שצוינה.
-
pathEquals
מחרוזת אופציונלי
תואם אם קטע הנתיב של כתובת ה-URL שווה למחרוזת שצוינה.
-
pathPrefix
מחרוזת אופציונלי
תואם אם קטע הנתיב של כתובת ה-URL מתחיל במחרוזת שצוינה.
-
pathSuffix
מחרוזת אופציונלי
תואם אם קטע הנתיב של כתובת ה-URL מסתיים במחרוזת שצוינה.
-
ports
(מספר | מספר[])[] אופציונלי
תואם אם היציאה של כתובת ה-URL כלולה באחת מרשימות היציאות שצוינו. לדוגמה,
[80, 443, [1000, 1200]]
תואם לכל הבקשות ביציאה 80, 443 ובטווח 1,000-1200. -
queryContains
מחרוזת אופציונלי
תואם אם פלח השאילתה בכתובת ה-URL מכיל מחרוזת שצוינה.
-
queryEquals
מחרוזת אופציונלי
תואם אם פלח השאילתה בכתובת ה-URL שווה למחרוזת שצוינה.
-
queryPrefix
מחרוזת אופציונלי
תואם אם פלח השאילתה של כתובת ה-URL מתחיל במחרוזת שצוינה.
-
querySuffix
מחרוזת אופציונלי
תואם אם קטע השאילתה של כתובת ה-URL מסתיים במחרוזת שצוינה.
-
הונאות
string[] אופציונלי
תואם אם הסכמה של כתובת ה-URL שווה לאחת מהסכימות שצוינו במערך.
-
urlContains
מחרוזת אופציונלי
תואם אם כתובת ה-URL (ללא מזהה המקטע) מכילה מחרוזת שצוינה. מספרי היציאות יוסרו מכתובת ה-URL אם הם תואמים למספר היציאה שמוגדר כברירת מחדל.
-
urlEquals
מחרוזת אופציונלי
תואם אם כתובת ה-URL (ללא מזהה המקטע) שווה למחרוזת שצוינה. מספרי היציאות יוסרו מכתובת ה-URL אם הם תואמים למספר היציאה שמוגדר כברירת מחדל.
-
urlMatches
מחרוזת אופציונלי
תואם אם כתובת ה-URL (ללא מזהה המקטע) תואמת לביטוי רגולרי שצוין. מספרי היציאות יוסרו מכתובת ה-URL אם הם תואמים למספר היציאה שמוגדר כברירת מחדל. הביטויים הרגולריים משתמשים בתחביר RE2.
-
urlPrefix
מחרוזת אופציונלי
תואם אם כתובת ה-URL (ללא מזהה המקטע) מתחילה במחרוזת שצוינה. מספרי היציאות יוסרו מכתובת ה-URL אם הם תואמים למספר היציאה שמוגדר כברירת מחדל.
-
urlSuffix
מחרוזת אופציונלי
תואם אם כתובת ה-URL (ללא מזהה המקטע) מסתיימת במחרוזת שצוינה. מספרי היציאות יוסרו מכתובת ה-URL אם הם תואמים למספר היציאה שמוגדר כברירת מחדל.