|
Share = { |
|
/** |
|
* Показать пользователю дилог шаринга в сооветствии с опциями |
|
* Метод для использования в inline-js в ссылках |
|
* При блокировке всплывающего окна подставит нужный адрес и ползволит браузеру перейти по нему |
|
* |
|
* @example <a href="" onclick="return share.go(this)">like+</a> |
|
* |
|
* @param Object _element - элемент DOM, для которого |
|
* @param Object _options - опции, все необязательны |
|
*/ |
|
go: function(_element, _options) { |
|
var |
|
self = Share, |
|
options = $.extend( |
|
{ |
|
type: 'vk', // тип соцсети |
|
url: location.href, // какую ссылку шарим |
|
count_url: location.href, // для какой ссылки крутим счётчик |
|
title: document.title, // заголовок шаринга |
|
image: '', // картинка шаринга |
|
text: '', // текст шаринга |
|
}, |
|
$(_element).data(), // Если параметры заданы в data, то читаем их |
|
_options // Параметры из вызова метода имеют наивысший приоритет |
|
); |
|
|
|
if (self.popup(link = self[options.type](options)) === null) { |
|
// Если не удалось открыть попап |
|
if ( $(_element).is('a') ) { |
|
// Если это <a>, то подставляем адрес и просим браузер продолжить переход по ссылке |
|
$(_element).prop('href', link); |
|
return true; |
|
} |
|
else { |
|
// Если это не <a>, то пытаемся перейти по адресу |
|
location.href = link; |
|
return false; |
|
} |
|
} |
|
else { |
|
// Попап успешно открыт, просим браузер не продолжать обработку |
|
return false; |
|
} |
|
}, |
|
|
|
// ВКонтакте |
|
vk: function(_options) { |
|
var options = $.extend({ |
|
url: location.href, |
|
title: document.title, |
|
image: '', |
|
text: '', |
|
}, _options); |
|
|
|
return 'http://vkontakte.ru/share.php?' |
|
+ 'url=' + encodeURIComponent(options.url) |
|
+ '&title=' + encodeURIComponent(options.title) |
|
+ '&description=' + encodeURIComponent(options.text) |
|
+ '&image=' + encodeURIComponent(options.image) |
|
+ '&noparse=true'; |
|
}, |
|
|
|
// Одноклассники |
|
ok: function(_options) { |
|
var options = $.extend({ |
|
url: location.href, |
|
text: '', |
|
}, _options); |
|
|
|
return 'http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1' |
|
+ '&st.comments=' + encodeURIComponent(options.text) |
|
+ '&st._surl=' + encodeURIComponent(options.url); |
|
}, |
|
|
|
// Facebook |
|
fb: function(_options) { |
|
var options = $.extend({ |
|
url: location.href, |
|
title: document.title, |
|
image: '', |
|
text: '', |
|
}, _options); |
|
|
|
return 'http://www.facebook.com/sharer.php?s=100' |
|
+ '&p[title]=' + encodeURIComponent(options.title) |
|
+ '&p[summary]=' + encodeURIComponent(options.text) |
|
+ '&p[url]=' + encodeURIComponent(options.url) |
|
+ '&p[images][0]=' + encodeURIComponent(options.image); |
|
}, |
|
|
|
// Живой Журнал |
|
lj: function(_options) { |
|
var options = $.extend({ |
|
url: location.href, |
|
title: document.title, |
|
text: '', |
|
}, _options); |
|
|
|
return 'http://livejournal.com/update.bml?' |
|
+ 'subject=' + encodeURIComponent(options.title) |
|
+ '&event=' + encodeURIComponent(options.text + '<br/><a href="' + options.url + '">' + options.title + '</a>') |
|
+ '&transform=1'; |
|
}, |
|
|
|
// Твиттер |
|
tw: function(_options) { |
|
var options = $.extend({ |
|
url: location.href, |
|
count_url: location.href, |
|
title: document.title, |
|
}, _options); |
|
|
|
return 'http://twitter.com/share?' |
|
+ 'text=' + encodeURIComponent(options.title) |
|
+ '&url=' + encodeURIComponent(options.url) |
|
+ '&counturl=' + encodeURIComponent(options.count_url); |
|
}, |
|
|
|
// Mail.Ru |
|
mr: function(_options) { |
|
var options = $.extend({ |
|
url: location.href, |
|
title: document.title, |
|
image: '', |
|
text: '', |
|
}, _options); |
|
|
|
return 'http://connect.mail.ru/share?' |
|
+ 'url=' + encodeURIComponent(options.url) |
|
+ '&title=' + encodeURIComponent(options.title) |
|
+ '&description=' + encodeURIComponent(options.text) |
|
+ '&imageurl=' + encodeURIComponent(options.image); |
|
}, |
|
|
|
// Открыть окно шаринга |
|
popup: function(url) { |
|
return window.open(url,'','toolbar=0,status=0,scrollbars=1,width=626,height=436'); |
|
} |
|
} |