JSFiddle - React, Tailwind, and code Playground
HTML
<code lang="html">
<html>
<head>
<title>Заголовок статьи</title>
<meta name="description" content="Описание статьи" />
<meta property="og:image" content="https://img.ru/img.jpg" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="part-example">
<p>Share:
<button class="btn btn-default social_share" data-type="vk">VK.com</button>
<button class="btn btn-default social_share" data-type="telegram">Telegram</button>
<button class="btn btn-default social_share" data-type="wa">WhatsApp</button>
</p>
</div>
</div>
</body>
</html>
JavaScript
(function (factory) {
var registeredInModuleLoader;
if (typeof define === 'function' && define.amd) {
define(factory);
registeredInModuleLoader = true;
}
if (typeof exports === 'object') {
module.exports = factory();
registeredInModuleLoader = true;
}
if (!registeredInModuleLoader) {
return window.JSShare = factory();
}
}(function () {
/**
* indexOf for old browsers
*/
if (!('indexOf' in Array.prototype)) {
Array.prototype.indexOf = function(find, i /*opt*/) {
if (i === undefined) i = 0;
if (i < 0) i += this.length;
if (i < 0) i = 0;
for (var n = this.length; i < n; i++)
if (i in this && this[i] === find)
return i;
return -1;
};
}
/**
* Object Extending Functionality
*/
function _extend(out) {
out = out || {};
for (var i = 1; i < arguments.length; i++) {
if (!arguments[i]) {
continue;
}
for (var key in arguments[i]) {
if (arguments[i].hasOwnProperty(key)) {
out[key] = arguments[i][key];
}
}
}
return out;
}
/**
* Get data-attributes
*/
function _getData(el, defaultOptions) {
var data = {};
for (var key in defaultOptions) {
if (defaultOptions.hasOwnProperty(key)) {
var value = el.getAttribute('data-' + key);
if (value !== null && typeof value != 'undefined') {
data[key] = value;
}
}
}
return data;
}
/**
* Open a popup window with sharing info
* @param url
* @param _options
* @returns {Window}
* @private
*/
function _popup (url, _options) {
return window.open(url, '', 'toolbar=0,status=0,scrollbars=1,width=' + _options.popup_width + ',height=' + _options.popup_height);
}
/**
* Get URL for sharing based on options
* @param options
* @returns {string | *}
* @private
*/
function _getURL(options) {
if (options.url === '') {
options.url =...