(function ($) { /** * @param {object} _options */ $.fn.share = function (_options) { var options = { type: '', types: { facebook: { url: 'https://www.facebook.com/sharer/sharer.php?u=', textOption: false }, twitter_x: { url: 'https://twitter.com/share?url=', textOption: 'text=' }, }, excerptClass: 'excerpt' }; $.extend(options, _options); this.click(function (e) { e.preventDefault(); var type = options.types[options.type]; if (type !== undefined) { var extra = ''; if (type.textOption) { var text = $('.' + options.excerptClass).text(); if (text.length + location.href.length > 278) { text = text.substring(0, 278 - (location.href.length + 3)) + '...'; } extra = '&' + type.textOption + encodeURI(text); } window.open(type.url + encodeURI(location.href) + extra, "pop", "width=600, height=400, scrollbars=no"); } else { console.error(options.type + ' is unknown'); } }); }; }(jQuery)); $(function () { $('[data-share]').each(function () { $(this).share({type: $(this).data('share')}); }); });