इस दस्तावेज़ में, वेब कस्टम टेंप्लेट की अनुमतियों के बारे में बताया गया है.
हर अनुमति:
- उन एपीआई से जांचा गया जिन्हें इनकी ज़रूरत है.
- इस्तेमाल किए गए एपीआई के आधार पर, सैंडबॉक्स की गई JavaScript में अपने-आप पता चलता है. ऐसा कस्टम टेंप्लेट एडिटर में बदलाव करने के दौरान होता है (तेज़ फ़ीडबैक लूप के लिए) और कोड को कंपाइल किए जाने पर (यह पुष्टि करने के लिए कि सही अनुमतियां लागू की गई हैं).
- कस्टम टेंप्लेट एडिटर में बदलाव किया जा सकता है, ताकि अनुमति को और सटीक बनाया जा सके.
queryPermission
एपीआई की मदद से, सैंडबॉक्स की गई JavaScript में क्वेरी की जा सकती है.
access_globals
डिसप्ले नेम: ग्लोबल वैरिएबल को ऐक्सेस किया जाता है
जानकारी: इससे ग्लोबल वैरिएबल को ऐक्सेस करने की अनुमति मिलती है (इसमें संवेदनशील एपीआई भी शामिल हो सकते हैं).
कॉन्फ़िगरेशन: उन कुंजियों की सूची जिन्हें ऐक्सेस किया जा सकता है. हर कुंजी एक डॉट से अलग किया गया पाथ होती है. उदाहरण के लिए: 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
डिसप्ले नेम: इससे कुकी की वैल्यू का पता लगाया जाता है
ब्यौरा: तय किए गए नाम वाली कुकी की वैल्यू को पढ़ता है.
कॉन्फ़िगरेशन: उन कुकी के नामों की सूची जिन्हें पढ़ने की अनुमति है.
इसके लिए ज़रूरी है: getCookieValues
क्वेरी हस्ताक्षर: queryPermission('get_cookies', <name>)
नोट: कुकी के नाम के आधार पर, यह तय करता है कि कुकी को पढ़ा जा सकता है या नहीं.
कोड का उदाहरण
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
get_referrer
डिसप्ले नेम: इससे रेफ़रर यूआरएल का पता चलता है
जानकारी: रेफ़रर के सीमित हिस्सों को पढ़ने का ऐक्सेस देती है.
कॉन्फ़िगरेशन: नीचे दिए गए बूलियन यह तय करते हैं कि रेफ़रर के किस हिस्से को पढ़ा जा सकता है. रेफ़रर के दिए गए हिस्से को सिर्फ़ तब पढ़ा जा सकता है, जब उससे जुड़ा हिस्सा true
हो. अगर ये सभी बूलियन true
पर सेट हैं, तो कॉलर पूरा रेफ़रर यूआरएल पाने के लिए बताए गए कॉम्पोनेंट के बिना ही getReferrerUrl
को कॉल कर सकता है. अगर कोई वैल्यू सेट नहीं है, तो डिफ़ॉल्ट वैल्यू 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
डिसप्ले नेम: इससे यूआरएल का पता चलता है
जानकारी: यह मौजूदा पेज का पूरा या कुछ यूआरएल दिखाता है.
कॉन्फ़िगरेशन: नीचे दिए गए बूलियन यह तय करते हैं कि यूआरएल के किस हिस्से को पढ़ा जा सकता है. यूआरएल के दिए गए किसी हिस्से को सिर्फ़ तब पढ़ा जा सकता है, जब उससे जुड़ा हिस्सा सही हो. कॉलर पूरा यूआरएल पाने के लिए, तय किए गए कॉम्पोनेंट के बिना getUrl
को कॉल कर सकता है. ऐसा तब ही किया जा सकता है, जब सभी बूलियन true
पर सेट हों. अगर कोई वैल्यू सेट नहीं है, तो डिफ़ॉल्ट वैल्यू all
होती है. अगर कोई वैल्यू सेट की जाती है, तो वैल्यू कॉम्पोनेंट का कलेक्शन होना चाहिए. इसमें कॉम्पोनेंट, इनमें से कोई एक होता है: protocol
, host
, port
, path
, query
, extension
या fragment
.
queryKeys
:
अगर क्वेरी चुनी जाती है, तो टेंप्लेट लेखक, क्वेरी कुंजियों के सेट को और सीमित कर सकता है जिससे वह पढ़ सकता है. यह कुंजियों का एक आसान कलेक्शन है, जिसमें कोई वाइल्डकार्ड
नहीं है.
इसके लिए ज़रूरी है: getUrl
क्वेरी हस्ताक्षर: queryPermission('get_url', <optional url component>,
<optional query key>)
अगर दिया गया है, तो यूआरएल कॉम्पोनेंट 'protocol'
, 'host'
, 'port'
,
'path'
, 'query'
, 'extension'
, 'fragment'
में से कोई एक होना चाहिए. अगर अनुमति नहीं दी जाती है, तो
अनुमति से जुड़ी क्वेरी में पूरे यूआरएल को ऐक्सेस करने का अनुरोध किया जाता है.
अगर दिया गया है, तो क्वेरी कुंजी वह क्वेरी स्ट्रिंग तर्क होना चाहिए जिसे टेंप्लेट कोड पढ़ना चाहता है.
ध्यान दें: यह कंट्रोल करता है कि कस्टम टेंप्लेट, मौजूदा जगह से कॉन्टेंट पढ़ सकता है या नहीं. जगह के किसी खास हिस्से तक सीमित करने की अनुमति देता है.
कोड का उदाहरण
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 इंजेक्ट करता है.
कॉन्फ़िगरेशन: यूआरएल पैटर्न की सूची
इसके लिए ज़रूरी है: 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
डिसप्ले नेम: स्क्रिप्ट इंजेक्ट करती है
जानकारी: पेज में स्क्रिप्ट इंजेक्ट करता है.
कॉन्फ़िगरेशन: यूआरएल पैटर्न की सूची
इसके लिए ज़रूरी है: 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);
}
डेटा इकट्ठा करने की प्रोसेस
डिसप्ले नेम: कंसोल में लॉग करता है
जानकारी: डेवलपर कंसोल और 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
डिसप्ले नेम: इससे, डेटा लेयर का पता चलता है
जानकारी: डेटा स्तर से मिले डेटा को पढ़ता है.
कॉन्फ़िगरेशन: कुंजी के मिलान वाले एक्सप्रेशन का सेट, जिसमें कुंजी का मिलान, बिंदुओं वाली पहचानों की एक खास सीरीज़ हो सकती है और इसके आखिर में वाइल्डकार्ड वाला हिस्सा भी हो सकता है. कुंजी के मिलान एक्सप्रेशन से यह तय होता है कि डेटा लेयर से कौनसी प्रॉपर्टी पढ़ी जा सकती हैं.
इसके लिए ज़रूरी है: 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_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
डिसप्ले नेम: इससे इवेंट के मेटाडेटा का पता चलता है
जानकारी: इवेंट कॉलबैक में, इवेंट के मेटाडेटा को पढ़ता है
कॉन्फ़िगरेशन: कोई नहीं
इसके लिए ज़रूरी है: 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 अनुरोध भेजता है. जवाब प्रोसेस नहीं किया गया.
कॉन्फ़िगरेशन: अनुमति वाले यूआरएल पैटर्न की सूची.
इसके लिए ज़रूरी है: sendPixel
क्वेरी हस्ताक्षर: queryPermission('send_pixel', <url>)
ध्यान दें: इससे यह तय होता है कि कस्टम टेंप्लेट, जीईटी अनुरोध भेज सकता है या नहीं और वह किस ऑरिजिन पर जा सकता है.
कोड का उदाहरण
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
डिसप्ले नेम: कुकी सेट करता है
जानकारी: इसमें दिए गए नाम और पैरामीटर के साथ कुकी सेट की जाती है.
कॉन्फ़िगरेशन: अनुमति वाली कुकी के नामों की टेबल. हर नाम में नाम, डोमेन, पाथ, secure
एट्रिब्यूट, और समयसीमा खत्म होने से जुड़ी वैकल्पिक पाबंदियां शामिल होती हैं.
इसके लिए ज़रूरी है: setCookie
क्वेरी हस्ताक्षर: queryPermission('set_cookies', <name>, <options>)
ध्यान दें: इससे यह तय होता है कि कुकी को लिखा जा सकता है या नहीं. यह कुकी का नाम, डोमेन, पाथ, 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
डिसप्ले नेम: इससे डेटा लेयर में बदलाव किया जाता है
जानकारी: डेटा स्तर में डेटा लिखता है.
कॉन्फ़िगरेशन: कुंजी के मिलान वाले एक्सप्रेशन का सेट, जिसमें कुंजी का मिलान, बिंदुओं वाली पहचानों की एक खास सीरीज़ हो सकती है और इसके आखिर में वाइल्डकार्ड वाला हिस्सा भी हो सकता है. कुंजी के मिलान एक्सप्रेशन से यह तय होता है कि डेटा लेयर में कौनसी प्रॉपर्टी जोड़ी जा सकती हैं.
इसके लिए ज़रूरी है: 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'});
}