ตอนนี้การเรียกใช้ 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>
คุณดูการทำงานจริงได้ในการสาธิตบน GitHub
และดูซอร์สโค้ด
การไม่ระบุแอตทริบิวต์จะส่งผลให้เกิด NotAllowedError
พร้อมข้อความ
Failed to execute 'share' on 'Navigator': Permission denied
ผู้ให้บริการเบราว์เซอร์ทุกรายเห็นพ้องกับข้อจำกัดนี้เพื่อปรับปรุงความเป็นส่วนตัวและความปลอดภัยของผู้ใช้ รวมถึงป้องกันไม่ให้ผู้ประสงค์ร้าย เช่น โฆษณาที่ไม่เหมาะสม กระตุ้นการดำเนินการแชร์ที่ไม่คาดคิด