Javascript Web Share API- Navigator.share 分享網頁內容

手機 App 可以透過原生介面實現分享功能,而 Web Share API 可以協助我們在 Android 或 IOS 網頁上做到類似像 App 的分享功能,主要是透過作業系統原生介面分享,可以輕鬆地將內容分享至第三方平台(Facebook、Twitter、Line…),分享內容可以為連結、文字或是檔案

廣告

方法介紹

回傳一個 Promise 函式,可以捕捉成功 / 失敗結果,需透過按鈕 click 等 UI 事件來觸發

回傳 Boolean,用以判斷內容是否可以分享

使用限制

  • 必須透過 HTTPS(secure contexts)連結網站
  • 必須透過 UI 事件觸發,像是按鈕 click
  • 瀏覽器支援度較低(caniuse-Web-Share-API
  • url:分享的連結(String)
  • title:分享的標題(String)
  • text:分享的內文(String)
  • files:分享的檔案(Array)

功能實作

連結、文字分享

<button type="button" id="share-btn">分享</button>

因瀏覽器支援度較低,建議加上判斷 Navigator.share 是否存在,避免直接報錯

const btn = document.querySelector('#share-btn');

btn.addEventListener('click', async () => {
try {
if (!navigator.share) {
return;
}
await navigator.share({
title: 'Title',
text: 'Share Content',
url: 'https://xxx.com'
})
} catch (err) {
console.log(err.message);
}
});

檔案分享

<input type="file" id="file-input" accept="image/*" />
<button type="button" id="share-btn">分享</button>

先判斷檔案是否能共享,使用 Navigator.canShare,如果回傳 true,表示 Navigator.share 可以成功呼叫

const btn = document.querySelector('#share-btn');
const input = document.querySelector('#file-input');

btn.addEventListener('click', async () => {
try {
const files = input.files;

if (!files.length || !navigator.canShare || !navigator.canShare({ files })) {
return;
}
await navigator.share({
files,
title: 'Image',
text: 'Share Content'
})
} catch (err) {
console.log(err.message);
}
});

範例畫面


參考文章:

https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share
https://web.dev/web-share/

廣告
透過 NVM 管理多版本 Node.js(MacOS) Javascript ES6 Class 與建構函式

評論

廣告
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×