Ten dokument opisuje uprawnienia dotyczące niestandardowych szablonów internetowych.
Każde uprawnienie:
- Sprawdzane przez interfejsy API, które tego wymagają.
- Automatycznie wykrywana w języku JavaScript w trybie piaskownicy na podstawie używanych interfejsów API. Dzieje się tak, gdy zmiany są wprowadzane w edytorze szablonów niestandardowych (w celu szybkiego zapętlenia opinii) oraz po skompilowaniu kodu (aby sprawdzić, czy są egzekwowane prawidłowe uprawnienia).
- Możliwość edytowania w edytorze szablonów niestandardowych w celu zwiększenia uprawnień.
- Tworzenie zapytań w języku JavaScript piaskownicy za pomocą interfejsu API
queryPermission
.
dostęp_globalny
Wyświetlana nazwa: uzyskuje dostęp do zmiennych globalnych
Opis: dostęp do zmiennej globalnej (z uwzględnieniem poufnych interfejsów API).
Konfiguracja: lista kluczy, do których można uzyskać dostęp. Każdy klucz to ścieżka z kropką. Na przykład: foo.bar
Pierwszy token w każdej ścieżce nie może być wstępnie zdefiniowanym globalnym kluczem przeglądarki ani słowem kluczowym JavaScript. Ma uprawnienia do odczytu, zapisu i wykonywania pól wyboru regulujących dostęp.
Wymagane przez: setInWindow
, copyFromWindow
, callInWindow
, createQueue
, createArgumentsQueue
Podpis zapytania: 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>)
lub queryPermission('access_globals', 'execute', <key of function to execute>)
Uwagi: określa, czy szablon niestandardowy może odczytywać/zapisywać w wartościach globalnych.
Przykładowy kod
const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
const dataLayerPush = createQueue('dataLayer');
}
dostęp_do miejsca_lokalnego
Wyświetlana nazwa: uzyskuje dostęp do pamięci lokalnej
Opis: dostęp do określonych kluczy w pamięci lokalnej.
Konfiguracja: lista lokalnych kluczy pamięci, do których można uzyskać dostęp. Jest to prosty zestaw kluczy bez symboli wieloznacznych. ma pola wyboru do odczytu i zapisu, które regulują dostęp.
Wymagane przez: localStorage
Podpis zapytania: queryPermission('access_local_storage', 'read', <key to
read from>)
, queryPermission('access_local_storage', 'write', <key to write
to>)
lub queryPermission('access_local_storage', 'readwrite', <key to read and
write>)
Przykładowy kod
const queryPermission = require('queryPermission');
const localStorage = require('localStorage');
const key = 'my_key';
if (queryPermission('access_local_storage', 'read', key)) {
const value = localStorage.getItem(key);
}
dostęp_szablonu_szablonu
Wyświetlana nazwa: uzyskuje dostęp do pamięci szablonu
Opis: umożliwia dostęp do tymczasowego miejsca na dane dla szablonów, które mogą być widoczne przez cały czas korzystania ze strony.
Konfiguracja: brak
Wymagane przez: templateStorage
Podpis zapytania: queryPermission('access_template_storage')
Przykładowy kod
const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateStorage.getItem(key);
}
get_cookies
Wyświetlana nazwa:odczytuje wartości plików cookie.
Opis: odczytuje wartości plików cookie o podanej nazwie.
Konfiguracja: lista nazw plików cookie, które można odczytywać.
Wymagane przez: getCookieValues
Podpis zapytania: queryPermission('get_cookies', <name>)
Uwagi: w zależności od nazwy decyduje o tym, czy można odczytać plik cookie.
Przykładowy kod
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
get_referrer,
Wyświetlana nazwa:odczytuje adres URL strony odsyłającej.
Opis: zezwala na odczytywanie zawężonych części strony odsyłającej.
Konfiguracja: poniższe wartości logiczne określają, którą część strony odsyłającej można odczytać. Daną część strony odsyłającej można odczytać tylko wtedy, gdy jej część to true
. Wywołujący może wywołać element getReferrerUrl
bez określonego komponentu, aby uzyskać pełny adres URL strony odsyłającej, jeśli wszystkie te wartości logiczne są ustawione na true
. Jeśli nie ustawisz żadnej wartości, zostanie użyta wartość domyślna all
. Jeśli wartość jest ustawiona, musi być tablicą komponentów, w których komponent jest jednym z tych atrybutów: protocol
, host
, port
, path
, query
lub extension
.
queryKeys
: jeśli wybrane zostanie zapytanie, autor szablonu może jeszcze bardziej ograniczyć zestaw kluczy zapytań, z których może odczytywać dane. Jest to prosty zestaw kluczy bez symboli wieloznacznych.
Wymagane przez: getReferrerUrl
, getReferrerQueryParameters
Podpis zapytania: queryPermission('get_referrer', <url_component>)
Przykładowy kod
const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
referrer = getReferrerUrl('queryParams');
}
get_url
Wyświetlana nazwa: Odczytuje URL
Opis: zwraca część lub całość adresu URL bieżącej strony.
Konfiguracja: poniższe wartości logiczne określają, którą część adresu URL można odczytać. Daną część adresu URL można odczytać tylko wtedy, gdy odpowiadająca jej część jest prawda. Wywołujący może wywoływać interfejs getUrl
bez określenia komponentu, by uzyskać cały adres URL, tylko jeśli wszystkie wartości logiczne są ustawione na true
. Jeśli nie ustawisz żadnej wartości, zostanie użyta wartość domyślna all
. Jeśli wartość jest ustawiona, wartość musi być tablicą komponentów, w których komponent jest jednym z tych elementów: protocol
, host
, port
, path
, query
, extension
lub fragment
.
queryKeys
: jeśli wybrane zostanie zapytanie, autor szablonu może jeszcze bardziej ograniczyć zestaw kluczy zapytań, z których może odczytywać dane. Jest to prosty zestaw kluczy bez symboli wieloznacznych.
Wymagane przez: getUrl
Podpis zapytania: queryPermission('get_url', <optional url component>,
<optional query key>)
Komponent URL powinien zawierać jeden z tych parametrów: 'protocol'
, 'host'
, 'port'
,
'path'
, 'query'
, 'extension'
, 'fragment'
. Jeśli to pominiesz, zapytanie o uprawnienia to prośba o dostęp do całego adresu URL.
Jeśli jest podany, klucz zapytania powinien być argumentem ciągu zapytania, który kod szablonu chce odczytać.
Uwaga: określa, czy szablon niestandardowy może odczytywać dane z bieżącej lokalizacji. Zezwala na ograniczenie do konkretnej części lokalizacji.
Przykładowy kod
const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
const gclid = getUrl('query', false, null, 'gclid');
}
wstrzyknięty_element_iframe
Wyświetlana nazwa: wstawia wstawienie ukrytych elementów iframe
Opis: wstawia niewidoczny element iframe z określonym adresem URL.
Konfiguracja: lista wzorców adresów URL
Wymagane przez: injectHiddenIframe
Podpis zapytania: queryPermission('inject_hidden_iframe', <url>)
Uwaga: określa, czy szablon niestandardowy może wstrzykiwać niewidoczne elementy iframe, z którego źródła może to robić.
Przykładowy kod
const queryPermission = require('queryPermission');
const injectHiddenIframe = require('injectHiddenIframe');
const url = 'https://www.example.com/iframes';
if (queryPermission('inject_hidden_iframe', url)) {
injectHiddenIframe(url);
}
wstrzyknięty_skrypt
Wyświetlana nazwa: wstawia skrypty
Opis: wstawia skrypt na stronie.
Konfiguracja: lista wzorców adresów URL
Wymagane przez: injectScript
Podpis zapytania: queryPermission('inject_script', <url>)
Uwaga: decyduje, czy szablon niestandardowy może wstrzyknąć kod JavaScript i z jakiego źródła może to zrobić.
Przykładowy kod
const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
injectScript(url);
}
warstwa_danych_słuchania
Wyświetlana nazwa: wykrywa zdarzenia warstwy danych.
Opis: rejestruje wywołania zwrotne, które wykrywają zdarzenia warstwy danych.
Konfiguracja: wartość logiczna określająca, czy dozwolone są dowolne zdarzenia lub czy dozwolony jest tylko zestaw określonych zdarzeń. Jeśli to drugie, należy określić zestaw nazw zdarzeń.
Wymagane przez: addDataLayerEventListener
, removeDataLayerEventListener
Podpis zapytania: queryPermission('listen_data_layer', <event name>)
Uwaga: określa, czy szablon niestandardowy może rejestrować i wyrejestrowywać odbiorców danego zdarzenia.
Przykładowy kod
const addDataLayerEventListener = require('internal.addDataLayerEventListener');
const queryPermission = require('queryPermission');
const eventName = 'gtm.scrollDepth';
if (queryPermission('listen_data_layer', eventName)) {
const listenerId = addDataLayerEventListener(eventName, (event) => {
// ...
});
}
logowanie
Wyświetlana nazwa: rejestruje w konsoli
Opis: rejestruje konsolę programisty i tryb podglądu Menedżera tagów Google.
Konfiguracja: opcja umożliwiająca logowanie w środowisku produkcyjnym. Domyślnie włączone jest logowanie tylko w przypadku debugowania/podglądu. W przypadku odmowy uprawnień logToConsole
nie zgłasza błędu, ale ukrywa komunikat logu.
Wymagane przez: logToConsole
Podpis zapytania: queryPermission('logging')
Uwaga: określa, czy szablon niestandardowy może logować się w konsoli programisty.
Przykładowy kod
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');
warstwa_odczytu
Wyświetlana nazwa: odczyt warstwy danych
Opis: odczytuje dane z obiektu dataLayer.
Konfiguracja: zbiór wyrażeń kluczowych, w którym dopasowanie słowa kluczowego może być najsilniejszą serią kropek wraz z końcowym symbolem wieloznacznym. Wyrażenia kluczowe określają, które właściwości mogą być odczytywane z warstwy danych.
Wymagane przez: copyFromDataLayer
Podpis zapytania: queryPermission('read_data_layer', <data layer key to read
from>)
Uwaga: określa, czy szablon niestandardowy może odczytywać dane z warstwy danych.
Przykładowy kod
const queryPermission = require('queryPermission');
const copyFromDataLayer = require('copyFromDataLayer');
const dlKey = 'foo.bar';
if (queryPermission('read_data_layer', dlKey)) {
const dlContents = copyFromDataLayer(dlKey);
}
zestaw_znaków_odczytu
Wyświetlana nazwa:odczytuje zestaw znaków dokumentu.
Opis: czyta: document.characterSet
.
Konfiguracja: brak
Wymagane przez: readCharacterSet
Podpis zapytania: queryPermission('read_character_set')
Uwagi: określa, czy szablon niestandardowy może odczytywać pole document.characterSet
.
Przykładowy kod
const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
const characterSet = readCharacterSet();
}
odczyt_danych_kontenera
Wyświetlana nazwa: odczytuje dane z kontenera
Opis: odczytuje dane z kontenera.
Konfiguracja: brak
Wymagane przez: getContainerVersion
Podpis zapytania: queryPermission('read_container_data')
Uwaga: określa, czy szablon niestandardowy może odczytywać dane o kontenerze.
Przykładowy kod
const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
version = getContainerVersion();
}
read_event_metadata
Wyświetlana nazwa: odczytuje metadane zdarzenia
Opis: odczytuje metadane zdarzenia w wywołaniach zwrotnych zdarzenia.
Konfiguracja: brak
Wymagane przez: addEventCallback
Podpis zapytania: queryPermission('read_event_metadata')
Uwaga: określa, czy szablon niestandardowy może odczytywać metadane zdarzenia w wywołaniach zwrotnych.
Przykładowy kod
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
tytuł_odczytu
Wyświetlana nazwa: tytuł tytułu dokumentu.
Opis: czyta: document.title
.
Konfiguracja: brak
Wymagane przez: readTitle
Podpis zapytania: queryPermission('read_title')
Uwagi: określa, czy szablon niestandardowy może odczytywać pole document.title
.
Przykładowy kod
const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
const title = readTitle();
}
wyślij
Wyświetlana nazwa: wysyła piksele.
Opis: wysyła żądanie GET do określonego adresu URL. Odpowiedź nie jest przetwarzana.
Konfiguracja: lista dozwolonych wzorców adresów URL.
Wymagane przez: sendPixel
Podpis zapytania: queryPermission('send_pixel', <url>)
Uwagi: określa, czy szablon niestandardowy może wysyłać żądanie GET i do którego źródła może je wysyłać.
Przykładowy kod
const queryPermission = require('queryPermission');
const sendPixel = require('sendPixel');
const url = 'https://www.example.com?foo=3';
if (queryPermission('send_pixel', url)) {
sendPixel(url);
}
Ustawianie plików cookie
Wyświetlana nazwa:ustawia plik cookie.
Opis: ustawia plik cookie z określoną nazwą i parametrami.
Konfiguracja: tabela z dozwolonymi nazwami plików cookie, z których każda zawiera opcjonalne ograniczenia dotyczące nazwy, domeny, ścieżki, atrybutu secure
i daty ważności.
Wymagane przez: setCookie
Podpis zapytania: queryPermission('set_cookies', <name>, <options>)
Uwagi: decyduje o tym, czy plik cookie może być zapisywany. Zależy to od nazwy pliku cookie, domeny, ścieżki, atrybutu secure
i daty ważności.
Przykładowy kod
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);
}
wpisywanie_warstwy_danych
Wyświetlana nazwa: zapisuje warstwę danych.
Opis: zapisuje dane w dataLayer.
Konfiguracja: zbiór wyrażeń kluczowych, w którym dopasowanie słowa kluczowego może być najsilniejszą serią kropek wraz z końcowym symbolem wieloznacznym. Wyrażenia kluczowe określają, które właściwości mogą zapisywać informacje w warstwie danych.
Wymagane przez: gtagSet
Podpis zapytania: queryPermission('write_data_layer', <data layer key to
write from>)
Uwaga: określa, czy szablon niestandardowy może zapisywać informacje w warstwie danych.
Przykładowy kod
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}