เอกสารนี้ระบุสิทธิ์สำหรับเทมเพลตที่กำหนดเองของเว็บ
สิทธิ์แต่ละรายการมีลักษณะดังนี้
- ตรวจสอบโดย 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
ชื่อที่แสดง: อ่านค่าคุกกี้
รายละเอียด: อ่านค่าของคุกกี้ด้วยชื่อที่ระบุไว้แล้ว
การกำหนดค่า: รายชื่อชื่อคุกกี้ที่ได้รับอนุญาตให้อ่าน
ต้องระบุโดย: 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
ชื่อที่แสดง: อ่าน URL ของผู้อ้างอิง
คำอธิบาย: อนุญาตสิทธิ์การอ่านส่วนที่จำกัดของเครื่องมืออ้างอิง
การกำหนดค่า: บูลีนต่อไปนี้จะควบคุมส่วนของเครื่องมืออ้างอิงที่อ่านได้
ระบบจะอ่านส่วนหนึ่งของเครื่องมืออ้างอิงได้ก็ต่อเมื่อส่วนที่เกี่ยวข้องเป็น 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 ได้ก็ต่อเมื่อส่วนที่เกี่ยวข้องเป็น
จริง ผู้โทรสามารถโทรหา 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);
}
การบันทึก
ชื่อที่แสดง: บันทึกไปที่คอนโซล
คำอธิบาย: บันทึกไปที่คอนโซลของนักพัฒนาซอฟต์แวร์และโหมดแสดงตัวอย่างของ 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>)
หมายเหตุ: ควบคุมว่าเทมเพลตที่กำหนดเองจะอ่านจาก Data Layer ได้หรือไม่
ตัวอย่างโค้ด
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
คำอธิบาย: ช่วยให้เทมเพลตอ่านข้อมูลวิเคราะห์ที่จัดเก็บไว้ได้ เช่น Client ID
การกำหนดค่า: ไม่มี
ต้องระบุโดย: readAnalyticsStorage
ลายเซ็นของคำค้นหา: queryPermission('read_analytics_storage')
หมายเหตุ: ควบคุมว่าเทมเพลตที่กำหนดเองจะอ่านจากพื้นที่เก็บข้อมูลการวิเคราะห์ได้หรือไม่
ตัวอย่างโค้ด
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
ชื่อที่แสดง: อ่านข้อมูลเมตาของเหตุการณ์
คำอธิบาย: อ่านข้อมูลเมตาของเหตุการณ์ใน Callback ของเหตุการณ์
การกำหนดค่า: ไม่มี
ต้องระบุโดย: 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
ชื่อที่แสดง: ตั้งค่าคุกกี้
คำอธิบาย: ตั้งค่าคุกกี้โดยใช้ชื่อและพารามิเตอร์ที่ระบุ
การกำหนดค่า: ตารางชื่อคุกกี้ที่อนุญาต โดยแต่ละชื่อมีข้อจำกัดที่ไม่บังคับ
เกี่ยวกับชื่อ โดเมน เส้นทาง แอตทริบิวต์ 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>)
หมายเหตุ: ควบคุมว่าเทมเพลตที่กำหนดเองจะเขียนไปยัง Data Layer ได้หรือไม่
ตัวอย่างโค้ด
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}