VanillaJS: Webページから共有機能を呼び出す

こういうやつ。

そろそろ対応しているんじゃないかと思って調べたら、やっぱりありました。

https://developer.mozilla.org/ja/docs/Web/API/Navigator/share

const data = {
  url: "https://greenspace.info",
  title: "title",
  text: "text"
  
};

navigator.share(data);

data の url, title, text はどれか一つは含まれていれば OK。(最低 1つは必要)

しかも、実際シェアしたかどうかを Promise で返してくれるので、await すればシェアが実行されたかどうかをトレースすることが可能。また、キャンセルされたり、data オブジェクトに上記のプロパティーが 1つもない場合は例外が発生するので catch で拾えます。

基本的に使えるのはモバイル系ブラウザーのみ...と思いきや、Edge と Safari は PC版でもサポートしている模様。

ここのシェアリンクもこんな感じにしてます。(もうちょいいじってますが)

    const shareLink = document.querySelector("a.share");
    if( navigator.share ) {
      shareLink.addEventListener('click', () => {
        navigator.share({
          title: document.title,
          url: location.href
        });
      });
    }
    else if( shareLink ) {
      shareLink.style.display = 'none';
    }

Twitter や Slack に共有したり、URLをコピーしたりと、割とブラウザーの共有ボタンを使うことは多いので、サイトの手軽なマーケ対策やアクセントには良いのではないでしょうか。