เพื่อความเป็นส่วนตัวและความปลอดภัยที่ดีขึ้น ตอนนี้คุณจะต้องอนุญาตการเรียก Web Share API ใน iframe ของบุคคลที่สามอย่างชัดเจน
บทความนี้กล่าวถึงการเปลี่ยนแปลงที่อาจทำให้เกิดข้อขัดข้องใน Web Share API การเปลี่ยนแปลงนี้มีผลใน Firefox แล้ว และจะมีผลใน Chrome ตั้งแต่เวอร์ชัน 110 และคาดว่าจะมีผลใน Safari ในเร็วๆ นี้
Web Share API ช่วยให้คุณแชร์ข้อความ, URL หรือไฟล์ได้ โค้ดสำหรับแชร์ในรูปแบบที่ง่ายที่สุดจะมีลักษณะดังนี้
try {
await navigator.share({
title: 'Title',
text: 'Text',
url: location.href,
});
} catch (err) {
console.error(`${err.name}: ${err.message}`);
}
หากการแชร์ต้องเกิดขึ้นใน iframe ของบุคคลที่สาม การเปลี่ยนแปลงข้อกำหนดล่าสุดกำหนดให้คุณต้องอนุญาตการดำเนินการดังกล่าวอย่างชัดเจน ซึ่งทําได้โดยการเพิ่มแอตทริบิวต์ allow
ลงในแท็ก <iframe>
ที่มีค่าเป็น web-share
ซึ่งจะบอกเบราว์เซอร์ว่าเว็บไซต์ที่ฝังอนุญาตให้ iframe ของบุคคลที่สามที่ฝังอยู่เรียกใช้การดำเนินการแชร์ได้
<!DOCTYPE html>
<html lang="en">
<body>
<h1>Web Share in third-party iframes</h1>
<!-- The embedding page is hosted on https://example.com/index.html. -->
<iframe allow="web-share" src="https://third-party.example.com/iframe.html"></iframe>
</body>
</html>
คุณนำฟีเจอร์นี้ไปใช้จริงได้ในการสาธิตเกี่ยวกับ Glitch และดูซอร์สโค้ด
การไม่ระบุแอตทริบิวต์จะทำให้คุณได้รับ NotAllowedError
พร้อมข้อความ
Failed to execute 'share' on 'Navigator': Permission denied
ผู้ให้บริการเบราว์เซอร์ทั้งหมดยอมรับข้อจำกัดนี้เพื่อปรับปรุงความเป็นส่วนตัวและความปลอดภัยของผู้ใช้ และเพื่อป้องกันไม่ให้ผู้ไม่ประสงค์ดี เช่น โฆษณาที่เป็นการละเมิด ทำให้เกิดการแชร์การกระทำที่ไม่คาดคิด