นํานโยบายไปใช้ในหน้าเว็บ เมื่อคอนเทนเนอร์ทํางานในหน้า จะมีการใช้นโยบายกับคําจํากัดความเทมเพลตที่กําหนดเองของ Tag Manager เพื่อควบคุมวิธีใช้ฟีเจอร์และฟังก์ชันบางอย่าง มีการใช้นโยบายกับ gtag('policy', ...)
API
gtag('policy', ...)
API ต้องการคําจํากัดความของ dataLayer และ gtag()
ตรวจสอบว่า dataLayer
และ gtag()
ได้รับการกําหนดในโค้ดของคุณก่อนที่จะเรียกใช้ gtag('policy', ...)
ในสคริปต์ต่อไปนี้
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
ใช้ gtag('policy', ...)
API ในหน้าเว็บเพื่อกําหนดนโยบายสําหรับสิทธิ์ในเทมเพลตที่กําหนดเอง:
gtag('policy', <permissionId>, <function>)
อาร์กิวเมนต์ <permissionId>
เป็นสิทธิ์ประเภทใดประเภทหนึ่งที่รองรับ เช่น inject_script
ระบบจะเรียกใช้นโยบายเมื่อใดก็ตามที่คอนเทนเนอร์ต้องการตรวจสอบว่าสิทธิ์นั้นได้รับอนุญาตหรือไม่
gtag('policy', 'inject_script', function(containerId, permissionId, data) {
// Specific inject_script check goes here.
});
ระบุ 'all'
เพื่อโต้ตอบกับการตรวจสอบนโยบายทั้งหมด
gtag('policy', 'all', function(containerId, permissionId, data) {
// System-wide check goes here.
});
อาร์กิวเมนต์ที่ 3 คือ <function>
เป็นฟังก์ชันที่ใช้นโยบายที่ระบุกับลายเซ็นนี้
function(containerId, permissionId, data) {...}
containerId
คือรหัสคอนเทนเนอร์ของ Tag Manager เช่น'GTM-1234'
permissionId
คือสตริงที่ระบุประเภทนโยบายที่จะตรวจสอบdata
คือออบเจ็กต์ที่มีข้อมูลที่เกี่ยวข้องสําหรับประเภทสิทธิ์ที่ระบุ เช่น'url'
สําหรับสิทธิ์'send_pixel'
ฟังก์ชันนโยบายจะปฏิเสธคําขอสิทธิ์เมื่อแสดงผล false
หรือมีการส่งข้อยกเว้น ข้อยกเว้นที่มีประเภท string
หรือ Error
จะปรากฏในส่วนข้อผิดพลาดของแผงแก้ไขข้อบกพร่องเมื่อโหมดแสดงตัวอย่างเปิดอยู่ เมื่อมีการลงทะเบียนการตรวจสอบนโยบายหลายรายการ จะมีการเรียกใช้การตรวจสอบแต่ละรายการและการตรวจสอบแต่ละรายการจะปฏิเสธคําขอนโยบายได้
ตัวอย่างนี้เป็นการสร้างนโยบายที่ตรวจสอบสิทธิ์ 'inject_script'
gtag('policy', 'inject_script', function(containerId, permissionId, data) {
// reference the url of the script to be injected
let url = data.url || '';
// if the url of the injected script exactly matches, allow it.
// otherwise throw an error
if (url === 'https://scripts.example.com/analytics.js') {
return true;
} else {
throw 'Only permitted to inject https://scripts.example.com/analytics.js';
}
});
ตัวอย่างนี้ใช้คีย์เวิร์ด 'all'
เพื่อตรวจสอบสถานการณ์นโยบายหลายรายการ
gtag('policy', 'all', function(containerId, permissionId, data) {
// Only set policy for 1 specific container.
// This enables other containers loaded on the page to
// operate without restrictions on permissions.
if (container != 'GTM-4321') return true;
// Since the policy is 'all', adjust permissions conditionally.
switch (permissionId) {
case 'send_pixel':
return true;
case 'write_globals':
return data.key && data.key == '_gaq';
case 'inject_script':
let url = data.url || '';
if (url.indexOf('https://example.com') != 0)
throw 'Only example.com scripts are permitted';
default:
// IT staff decides that all unknown permissions
// are rejected.
return false;
}
});