บริการ HTML ใช้ iframe เพื่อแซนด์บ็อกซ์เว็บแอปหรืออินเทอร์เฟซผู้ใช้ที่กำหนดเองสำหรับ Google เอกสาร, Google ชีต และฟอร์ม เพื่อปกป้องผู้ใช้จาก HTML หรือ JavaScript ที่เป็นอันตราย บริการ HTML ไม่ได้ใช้ Sandbox ในสถานการณ์อื่นๆ เช่น การสร้างเนื้อหาของอีเมล แซนด์บ็อกซ์จะกำหนดข้อจำกัดเกี่ยวกับโค้ดฝั่งไคลเอ็นต์
โหมดแซนด์บ็อกซ์
เราจะหยุดให้บริการโหมดแซนด์บ็อกซ์ทั้งหมด ยกเว้น IFRAME แอปที่ก่อนหน้านี้ใช้โหมด NATIVE หรือ EMULATED จะใช้โหมด IFRAME โดยอัตโนมัติ
หากสคริปต์ของคุณได้รับการพัฒนาด้วยโหมดเก่า ให้ทําตามวิธีการย้ายข้อมูลเพื่อให้แน่ใจว่าสคริปต์ทํางานได้อย่างถูกต้อง
ตอนนี้เมธอด setSandboxMode
จะไม่มีผลเมื่อเรียกใช้
ข้อจำกัดในโหมด IFRAME
IFRAMEโหมดแซนด์บ็อกซ์อิงตามฟีเจอร์
แซนด์บ็อกซ์ iframe
ใน HTML5 โดยใช้คีย์เวิร์ดต่อไปนี้
allow-same-originallow-formsallow-scriptsallow-popupsallow-downloadsallow-modalsallow-popups-to-escape-sandboxallow-top-navigation-by-user-activation- แอตทริบิวต์นี้จะตั้งค่าสำหรับโปรเจ็กต์สคริปต์แบบสแตนด์อโลนเท่านั้น
allow-top-navigation คีย์เวิร์ดซึ่งอนุญาตให้เนื้อหานำทางบริบทการเรียกดูระดับบนสุดจะถูกจำกัดและไม่ได้ตั้งค่าเป็นแอตทริบิวต์ใน
แซนด์บ็อกซ์ หากต้องการเปลี่ยนเส้นทางสคริปต์ ให้เพิ่มลิงก์หรือปุ่มเพื่อให้
ผู้ใช้ดำเนินการแทน
ตั้งค่าแอตทริบิวต์เป้าหมายลิงก์
ในโหมด IFRAME คุณต้องตั้งค่าแอตทริบิวต์เป้าหมายของลิงก์เป็น
_top หรือ _blank
Code.js
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
top.html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>
นอกจากนี้ คุณยังลบล้างแอตทริบิวต์นี้ได้โดยใช้แท็ก <base> ภายในส่วน head
ของหน้าเว็บที่ครอบคลุม
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
ต้องใช้ HTTPS สำหรับเนื้อหาที่ใช้งานอยู่
เนื้อหา"ที่ใช้งานอยู่" เช่น สคริปต์ สไตล์ชีตภายนอก และ XmlHttpRequest ต้องโหลดผ่าน HTTPS ไม่ใช่ HTTP