Useful
jQuery pluginmodern JavaScript solution for share a link from your website to social networks or mobile messengers. Easy to install and configuring on any of your website!
Simple install, extensive documentation, developer support, SEO friendly, small bundle size (gzipped size: 4.5 Kb), many options for customization of appearance, clean code without scripts tracking user activity on the page, high speed.
- Vue.js — https://github.com/koddr/vue-goodshare (docs)
- React — https://github.com/koddr/react-goodshare-components (docs) [WIP, you can help now!]
Install via npm
:
$ npm install goodshare.js --save
Or include from jsDelivr CDN:
<script src="https://cdn.jsdelivr.net/npm/goodshare.js@6/goodshare.min.js"></script>
Script works with any HTML tags: <a>
or <div>
or <button>
or other.
So you can choose any and add required attributes
data-social
.
For example:
<!-- Create button with share to Twitter -->
<button data-social="twitter">Share this to Twitter</button>
<!-- Create link with share to Facebook -->
<a href="#" data-social="facebook">Share this to Facebook</a>
<!-- Create div container with share to LinkedIn -->
<div data-social="linkedin">Share this to LinkedIn</div>
<!-- Create icon from Fontello.com with share to Google+ -->
<i class="icon-google-plus" data-social="googleplus"></i>
By default, goodshare.js
search this tags for get title, description and image (for some social networks):
<head>
<title>Current page title</title>
<meta name="description" content="Current page description.">
<link rel="apple-touch-icon" href="http://example.com/path/to/image.png">
...
</head>
If you want to add different url
, title
, description
and image
to share element — use special data-*
attributes:
data-url
redefinesdocument.location.href
data-title
redefinesdocument.title
data-description
redefinesmeta[name="description"]
data-image
redefineslink[rel="apple-touch-icon"]
Note: Please keep in mind, not all social networks support all of them data attributes!
If you want to dynamically update the data that will be used for share. You can call a method Goodshare.reNewAllInstance()
that will update data in goodshare providers instance and update EventListeners
.
Note: For example, you have a widget to share content that generates images for sharing based on selected items or other user actions.
// Update all data
// Goodshare instance expose in window._goodshare by default
window._goodshare.reNewAllInstance();
To display share count, just add data-counter
attribute to HTML element that will contain numbers. For example:
<!-- Create link with share to Facebook and counter -->
<a href="#" data-social="facebook">
Share this to Facebook
<span data-counter="facebook"></span>
</a>
You also may put this attribute to any element.
Simply calls the handler when the hooking window is closed. Look more at Issue #57
window._goodshare.setShareCallback(function() {
console.log(arguments);
// some logic for handling share events
});
- No more depending on jQuery! Since
4.x
, no longer support the oldgoodshare.js
version (3.2.9 and lower). Thank you jQuery, but ES6 is better and cleaner. - Browser support. Since
4.x
,goodshare.js
do not support Microsoft Internet Explorer 8 and older. - Bundle. Since
5.2.0
,goodshare.js
drop support Webpack 3 and now bundled with Rollup.js. It saved over ~55 Kb of bundle size! Wow! - Polyfills. Since
6.0.0
,goodshare.js
have two versions: with (./goodshare.polyfill.min.js
) and without (./goodshare.min.js
) Array Polyfill. - No need to separated polyfills. Since
6.0.2
,goodshare.js
drop./goodshare.polyfill.min.js
and separated Array Polyfill from./src/polyfills
. - Browser support (2019). Since
6.0.3
,goodshare.js
only support: MSIE 11+, Edge 13+, Google Chrome 59+ and FireFox 50+.
Development and maintenance engaged by Vic Shóstak (aka Koddr).
If you want to say «thank you» and/or ask me about goodshare.js
— create new issue.