כדי לשפר את הפרטיות והאבטחה, עכשיו צריך לאפשר באופן מפורש קריאות ל-Web Share API ב-iframes של צד שלישי.
במאמר הזה נסביר על שינוי שעלול לגרום לשיבושים ב-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
. כל ספקי הדפדפנים הסכימו להגבלה הזו כדי לשפר את הפרטיות והאבטחה של המשתמשים, וכדי למנוע מגורמים זדוניים, למשל מודעות שמנצלות לרעה את המשתמשים, להפעיל פעולות שיתוף בלתי צפויות.