הרשאות לשימוש בתבניות מותאמות אישית

במאמר הזה מפורטות ההרשאות לתבניות בהתאמה אישית לאינטרנט.


כל הרשאה היא:

  • נבדקים על ידי ממשקי API שדורשים אותם.
  • מזוהה באופן אוטומטי ב-JavaScript בארגז חול, על סמך ממשקי ה-API שנעשה בהם שימוש. הפעולה הזו מתרחשת כשמבצעים עריכות בכלי לעריכת תבניות בהתאמה אישית (כדי לקבל משוב מהיר), וכשהקוד עובר קומפילציה (כדי לוודא שההרשאות הנכונות נאכפות).
  • אפשר לערוך את ההרשאה בעורך התבניות המותאמות אישית כדי להפוך אותה לספציפית יותר.
  • אפשר להריץ שאילתות ב-JavaScript בארגז חול באמצעות queryPermission API.

access_globals

שם לתצוגה: הרשאת גישה למשתנים גלובליים

תיאור: מאפשרת גישה למשתנה גלובלי (יכולה לכלול ממשקי API רגישים).

הגדרה: רשימה של מפתחות שאפשר לגשת אליהם. כל מפתח הוא נתיב שמופרד באמצעות נקודה. לדוגמה: foo.bar האסימון הראשון בכל נתיב לא יכול להיות מפתח שהוגדר מראש בהיקף הגלובלי של הדפדפן, או מילת מפתח של JavaScript. יש תיבות סימון של הרשאת קריאה, כתיבה וביצוע שקובעות את הגישה.

חובה ב: setInWindow, ‏ copyFromWindow, ‏ callInWindow,‏ createQueue, ‏ createArgumentsQueue

חתימת השאילתה: queryPermission('access_globals', 'read', <key to read from>) או queryPermission('access_globals', 'write', <key to write to>) או queryPermission('access_globals', 'readwrite', <key to read and write>) או queryPermission('access_globals', 'execute', <key of function to execute>)

הערות: קובעות אם תבנית בהתאמה אישית יכולה לקרוא ערכים גלובליים ו/או לכתוב אותם.

קוד לדוגמה

const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
  const dataLayerPush = createQueue('dataLayer');
}

access_local_storage

השם המוצג: גישה לאחסון המקומי

תיאור: מאפשרת גישה למפתחות שצוינו באחסון המקומי.

הגדרה: רשימה של מפתחות אחסון מקומי שאפשר לגשת אליהם. זהו מערך פשוט של מפתחות, ללא תווים כלליים. יש תיבות סימון של קריאה וכתיבה שקובעות את הגישה.

נדרש על ידי: localStorage

חתימת שאילתה: queryPermission('access_local_storage', 'read', <key to read from>) או queryPermission('access_local_storage', 'write', <key to write to>) או queryPermission('access_local_storage', 'readwrite', <key to read and write>)

קוד לדוגמה

const queryPermission = require('queryPermission');
const localStorage = require('localStorage');
const key = 'my_key';
if (queryPermission('access_local_storage', 'read', key)) {
  const value = localStorage.getItem(key);
}

access_template_storage

שם לתצוגה: גישה לאחסון של תבניות

תיאור: מאפשר גישה לאחסון זמני של תבניות שיכולות להישמר למשך חיי הדף.

הגדרה: אין

נדרש על ידי: templateStorage

חתימת שאילתה: queryPermission('access_template_storage')

קוד לדוגמה

const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
  const value = templateStorage.getItem(key);
}

get_cookies

השם המוצג: קריאת הערכים של קובצי ה-Cookie

תיאור: קריאת הערכים של קובצי ה-Cookie עם השם שצוין.

הגדרה: רשימה של שמות קובצי Cookie שמותר לקרוא.

נדרש על ידי: getCookieValues

חתימת שאילתה: queryPermission('get_cookies', <name>)

הערות: קובע אם אפשר לקרוא קובץ Cookie, בהתאם לשם שלו.

קוד לדוגמה

const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
  cookieValues = getCookieValues(cookieName);
}

get_referrer

שם לתצוגה: קריאה של כתובת ה-URL ממקור ההפניה (referrer)

תיאור: מאפשר גישת קריאה לחלקים מצומצמים של כתובת ה-referrer.

הגדרה: הערכים הבוליאניים הבאים קובעים איזה חלק של כתובת האתר המפנה ניתן לקריאה. אפשר לקרוא חלק מסוים של כתובת האתר המפנה רק אם החלק התואם הוא true. המתקשר יכול להתקשר אל getReferrerUrl בלי לציין רכיב כדי לקבל את כתובת ה-URL המלאה של הדף המפנה אם כל ערכי הבוליאנים האלה מוגדרים כ-true. אם לא מוגדר ערך, ערך ברירת המחדל הוא all. אם מוגדר ערך, הוא חייב להיות מערך של רכיבים, כאשר כל רכיב הוא אחד מהערכים הבאים: protocol, ‏ host, ‏ port, ‏ path, ‏ query או extension.

queryKeys: אם נבחרה שאילתה, מחבר התבנית יכול להגביל עוד יותר את קבוצת מפתחות השאילתה שהוא יכול לקרוא ממנה. זוהי מערך פשוט של מפתחות, ללא תווים כלליים.

נדרש על ידי: getReferrerUrl, getReferrerQueryParameters

חתימת שאילתה: queryPermission('get_referrer', <url_component>)

קוד לדוגמה

const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
  referrer = getReferrerUrl('queryParams');
}

get_url

שם לתצוגה: קריאת כתובת ה-URL

תיאור: החזרת חלק מכתובת ה-URL של הדף הנוכחי או את כולה.

הגדרה: הערכים הבוליאניים הבאים קובעים איזה חלק מכתובת ה-URL אפשר לקרוא. אפשר לקרוא חלק מסוים בכתובת ה-URL רק אם החלק התואם הוא true. המתקשר יכול להתקשר אל getUrl בלי לציין רכיב כדי לקבל את כתובת ה-URL המלאה, אם ורק אם כל ערכי הבוליאן האלה מוגדרים כ-true. אם לא מציינים ערך, ערך ברירת המחדל הוא all. אם מוגדר ערך, הוא חייב להיות מערך של רכיבים, כאשר רכיב הוא אחד מהערכים הבאים: protocol,‏ host, ‏ port, ‏ path, ‏ query, ‏ extension או fragment.

queryKeys: אם נבחרה שאילתה, מחבר התבנית יכול להגביל עוד יותר את קבוצת מפתחות השאילתה שהוא יכול לקרוא ממנה. זוהי מערך פשוט של מפתחות, ללא תווים כלליים.

נדרש על ידי: getUrl

חתימת שאילתה: queryPermission('get_url', <optional url component>, <optional query key>)

אם מספקים רכיב URL, הוא צריך להיות אחד מהערכים הבאים: 'protocol', ‏ 'host', ‏ 'port',‏ 'path', ‏ 'query', ‏ 'extension', ‏ 'fragment'. אם לא מציינים את הפרמטר הזה, שאילתת ההרשאה היא בקשה לגישה לכתובת ה-URL כולה.

אם מספקים מפתח שאילתה, הוא צריך להיות הארגומנט של מחרוזת השאילתה שהקוד של התבנית רוצה לקרוא.

הערות: המדיניות קובעת אם תבנית בהתאמה אישית יכולה לקרוא את המיקום הנוכחי. מאפשר להגביל לחלק ספציפי במיקום.

קוד לדוגמה

const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
  const gclid = getUrl('query', false, null, 'gclid');
}

inject_hidden_iframe

שם לתצוגה: החדרת מסגרות iframe מוסתרות

תיאור: החדרת iframe בלתי נראה עם כתובת URL נתונה.

הגדרה: רשימה של תבניות URL

נדרש על ידי: injectHiddenIframe

חתימת שאילתה: queryPermission('inject_hidden_iframe', <url>)

הערות: קובעת אם תבנית בהתאמה אישית יכולה להחדיר iframe בלתי נראה, ומאיזה מקור היא יכולה לעשות זאת.

קוד לדוגמה

const queryPermission = require('queryPermission');
const injectHiddenIframe = require('injectHiddenIframe');
const url = 'https://www.example.com/iframes';
if (queryPermission('inject_hidden_iframe', url)) {
  injectHiddenIframe(url);
}

inject_script

השם המוצג: החדרת סקריפטים

תיאור: הוספה של סקריפט לדף.

הגדרה: רשימה של תבניות URL

נדרש על ידי: injectScript

חתימת שאילתה: queryPermission('inject_script', <url>)

הערות: קובע אם תבנית בהתאמה אישית יכולה להטמיע JavaScript, ומאיזה מקור היא יכולה לעשות זאת.

קוד לדוגמה

const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
  injectScript(url);
}

רישום ביומן

השם המוצג: רישום במסוף

תיאור: רישום ביומן של Developer Console ושל מצב התצוגה המקדימה ב-GTM.

הגדרה: אפשרות להפעיל רישום ביומן בסביבת הייצור. ברירת המחדל היא הפעלת רישום ביומן רק בניפוי באגים או בתצוגה מקדימה. אם הגישה נדחית, logToConsole לא יציג שגיאה, אבל הוא יסתיר את הודעת היומן.

נדרש על ידי: logToConsole

חתימת שאילתה: queryPermission('logging')

הערות: המדיניות הזו קובעת אם תבנית בהתאמה אישית יכולה להתעדכן ביומן במסוף למפתחים.

קוד לדוגמה

const queryPermission = require('queryPermission');
const logToConsole = require('logToConsole');
// Note that it's fine to call log, since the log call will be ignored if
// logging isn't permitted in the current environment.
logToConsole('diagnostic info');

read_data_layer

השם המוצג: קריאה של שכבת נתונים

תיאור: קריאת נתונים מ-dataLayer.

הגדרה: קבוצה של ביטויי התאמה למפתחות, שבהם התאמה למפתח יכולה להיות סדרה מובילה של הפניות עם נקודות, עם תו כללי בסוף. ביטויים של התאמת מפתחות קובעים אילו מאפיינים אפשר לקרוא משכבת הנתונים.

נדרש על ידי: copyFromDataLayer

חתימת שאילתה: queryPermission('read_data_layer', <data layer key to read from>)

הערות: קובעים אם תבנית בהתאמה אישית יכולה לקרוא משכבת הנתונים.

קוד לדוגמה

const queryPermission = require('queryPermission');
const copyFromDataLayer = require('copyFromDataLayer');
const dlKey = 'foo.bar';
if (queryPermission('read_data_layer', dlKey)) {
  const dlContents = copyFromDataLayer(dlKey);
}

read_analytics_storage

השם המוצג: קריאת נתונים באחסון של Analytics

תיאור: מאפשר לקרוא נתונים מאוחסנים של Analytics, כמו מזהי לקוחות.

הגדרה: אין

נדרש על ידי: readAnalyticsStorage

חתימת שאילתה: queryPermission('read_analytics_storage')

הערות: קובע אם תבנית בהתאמה אישית יכולה לקרוא ממאגר הנתונים של Analytics.

קוד לדוגמה

const queryPermission = require('queryPermission');
const readAnalyticsStorage = require('readAnalyticsStorage');
if (queryPermission('read_analytics_storage')) {
  const value = readAnalyticsStorage();
}

read_character_set

השם המוצג: קריאת מערכת התווים של המסמך

תיאור: התוכן הוא document.characterSet.

הגדרה: אין

נדרש על ידי: readCharacterSet

חתימת שאילתה: queryPermission('read_character_set')

הערות: קובעת אם תבנית בהתאמה אישית יכולה לקרוא את document.characterSet.

קוד לדוגמה

const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
  const characterSet = readCharacterSet();
}

read_container_data

השם המוצג: קריאת נתונים של מאגר תגים

תיאור: קריאת נתונים על המאגר.

הגדרה: אין

נדרש על ידי: getContainerVersion

חתימת שאילתה: queryPermission('read_container_data')

הערות: ההגדרה הזו קובעת אם תבנית בהתאמה אישית יכולה לקרוא נתונים על מאגר התגים.

קוד לדוגמה

const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
  version = getContainerVersion();
}

read_event_metadata

שם לתצוגה: קריאת מטא-נתונים של אירועים

תיאור: קריאת מטא-נתונים של אירוע בקריאות חוזרות (callbacks) של אירועים

הגדרה: אין

נדרש על ידי: addEventCallback

חתימת שאילתה: queryPermission('read_event_metadata')

הערות: המדיניות קובעת אם תבנית בהתאמה אישית יכולה לקרוא מטא-נתונים של אירועים בפונקציות קריאה חוזרת.

קוד לדוגמה

const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
  addEventCallback((containerId, eventMetadata) => {
    // Read event metadata.
  });
}

read_title

השם המוצג: קריאת הכותרת של המסמך

תיאור: התוכן הוא document.title.

הגדרה: אין

נדרש על ידי: readTitle

חתימת שאילתה: queryPermission('read_title')

הערות: קובע אם תבנית בהתאמה אישית יכולה לקרוא את document.title.

קוד לדוגמה

const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
  const title = readTitle();
}

send_pixel

שם לתצוגה: שליחת פיקסלים

תיאור: שליחת בקשת GET לכתובת URL ספציפית. התשובה לא עוברת עיבוד.

הגדרה: רשימה של תבניות URL מותרות.

נדרש על ידי: sendPixel

חתימת שאילתה: queryPermission('send_pixel', <url>)

הערות: קובעת אם תבנית בהתאמה אישית יכולה לשלוח בקשת GET, ולאיזה מקור היא יכולה לעשות זאת.

קוד לדוגמה

const queryPermission = require('queryPermission');
const sendPixel = require('sendPixel');
const url = 'https://www.example.com?foo=3';
if (queryPermission('send_pixel', url)) {
  sendPixel(url);
}

set_cookies

Display name: Sets a cookie (השם המוצג: הגדרת קובץ Cookie)

תיאור: הגדרה של קובץ Cookie עם השם והפרמטרים שצוינו.

הגדרה: טבלה של שמות מותרים של קובצי Cookie, שלכל אחד מהם יש הגבלות אופציונליות על שם, דומיין, נתיב, מאפיין secure ותאריך תפוגה.

נדרש על ידי: setCookie

חתימת שאילתה: queryPermission('set_cookies', <name>, <options>)

הערות: המדיניות קובעת אם אפשר לכתוב קובץ Cookie, בהתאם לשם קובץ ה-Cookie, לדומיין, לנתיב, למאפיין secure ולתאריך התפוגה.

קוד לדוגמה

const queryPermission = require('queryPermission');
const setCookie = require('setCookie');
const options = {
  'domain': 'www.example.com',
  'path': '/',
  'max-age': 60*60*24*365,
  'secure': true
};
if (queryPermission('set_cookies', 'info', options)) {
  setCookie('info', 'xyz', options);
}

write_data_layer

השם המוצג: כתיבה לשכבת הנתונים

תיאור: כתיבת נתונים ל-dataLayer.

הגדרה: קבוצה של ביטויי התאמה למפתחות, שבהם התאמה למפתח יכולה להיות סדרה מובילה של הפניות עם נקודות, עם תו כללי בסוף. ביטויים של התאמת מפתחות קובעים אילו מאפיינים יכולים לכתוב לשכבת הנתונים.

נדרש על ידי: gtagSet

חתימת שאילתה: queryPermission('write_data_layer', <data layer key to write from>)

הערות: ההגדרה הזו קובעת אם תבנית בהתאמה אישית יכולה לכתוב לשכבת הנתונים.

קוד לדוגמה

const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
  gtagSet({dlKey: 'baz'});
}