添加到任何网站的“分享到mastodon”链接
#javascript #mastodon #sharing

我刚刚在ChristianHeilmann.com上添加了“分享到Mastodon”的链接。很久以前,我添加了一个“分享到Twitter”链接,因为有一个URL可以将Tweet内容发送给该链接:

http://twitter.com/share?url={URL}&text={text}?&via={twitter_handle}

使用Mastodon,它并不那么容易,因为它是联合服务,也没有一个URL。因此,我必须找到一种方法来要求人们提供服务网址,然后以某种方式存储它。

我已经看到了很多解决方案,但是我真的想要一个裸露的解决方案。所以这是您适合您的mastodon-share

为了添加“分享到mastodon”链接,您需要做的就是添加与类的链接。

<a href="#" target="mastodon" class="mastodon-share">
Share to Mastodon
</a>
<script src="mastodon-share.js"></script>

脚本很简单,如果您检查出来:

// Grab link from the DOM
const button = document.querySelector('.mastodon-share');

// When a user clicks the link
button.addEventListener('click', (e) => {

// If the user has already entered their instance and it is in localstorage
// write out the link href with the instance and the current page title and URL
if(localStorage.getItem('mastodon-instance')) {
  button.href = `
    https://${localStorage.getItem('mastodon-instance')}/
    share?text=${encodeURIComponent(document.title)}
    %0A${encodeURIComponent(location.href)}
  `;
// otherwise, prompt the user for their instance and save it to localstorage
} else {
    e.preventDefault();
    let instance = window.prompt(
      'Please tell me your Mastodon instance'
    );
    localStorage.setItem('mastodon-instance', instance);
}
});

您可以try it out on GitHub