ข้อกำหนดใหม่สำหรับ Web Share API ใน iframe ของบุคคลที่สาม

เพื่อความเป็นส่วนตัวและความปลอดภัยที่ดีขึ้น ตอนนี้คุณจะต้องอนุญาตการเรียก 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 ผู้ให้บริการเบราว์เซอร์ทั้งหมดยอมรับข้อจำกัดนี้เพื่อปรับปรุงความเป็นส่วนตัวและความปลอดภัยของผู้ใช้ และเพื่อป้องกันไม่ให้ผู้ไม่ประสงค์ดี เช่น โฆษณาที่เป็นการละเมิด ทำให้เกิดการแชร์การกระทำที่ไม่คาดคิด