สิทธิ์เทมเพลตที่กำหนดเอง

เอกสารนี้ระบุสิทธิ์สำหรับเทมเพลตที่กำหนดเองบนเว็บ


สิทธิ์แต่ละรายการคือ

  • ตรวจสอบโดย 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 ที่มา

คำอธิบาย: ให้สิทธิ์อ่านในบางส่วนของผู้อ้างอิง

การกำหนดค่า: บูลีนต่อไปนี้จะควบคุมว่าส่วนใดของ 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 ได้หรือไม่ และแทรก 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')

หมายเหตุ: ควบคุมว่าเทมเพลตที่กำหนดเองจะบันทึกไปยัง Developer Console ได้หรือไม่

ตัวอย่างโค้ด

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 ไปยัง 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

ชื่อที่แสดง: เขียนชั้นข้อมูล

คำอธิบาย: เขียนข้อมูลลงใน 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'});
}