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