Работа с fancybox, социальный постинг
Имею код вызова
var thisHash = window.location.hash;
$(document).ready(function() {
if(window.location.hash) {
$(thisHash).fancybox({
}).trigger('click');
}
$('.fancybox').attr('rel', 'gallery').fancybox({
prevEffect : 'fade',
nextEffect : 'fade',
closeBtn : true,
arrows : true,
nextClick : true,
beforeShow: function() {
var el, id = $(this.element).data('title-id');
if(id){
el = $('#'+id);
if(el.length){
this.title = el.html();
}
}
window.location.hash = this.index;
},
});
});
При открытии к адресу добавляется хеш с id изображения и иконки соц сетей. т.е если код изображения у нас <a id="0" class="fancybox" href="#" data-title-id="title-1" data-fancybox-group="gallery" title=""><img src="#" alt="" /></a> <div id="title-1" class="hidden"> <div class="shareblock"></div> </div> где <a id="0" добавляется в хеш http://...ru/#0 И подгружаеются кнопки соц сетей в <div class="shareblock"></div> Проблема: Сразу дам ссылку на пример (не реклама, ибо там нечего рекламировать, всего 3 картинки) http://mryayoo.ru 1. При первой загрузке страницы, кликаем на первую картинку видим адрес: http://mryayoo.ru/#0 Нажимаем кнопку Twitter, видим содержание: Код:
Заголвок http://mryayoo.ru/3. Открываем первую картинку, жмем кнопку Twitter, видим содержание: Код:
Заголвок http://mryayoo.ru/#0Вопрос: Как и что куда дописать, чтобы при первом открытии картинки содержание твиттера было идентично содержанию адресной строки, аналогично при прокрутке ? |
Решил вопрос так:
function shareLoad() {
$.getScript('share.js');
}
|
Всплыла другая проблема, при шаринге вконтакте, берутся все картинки со страницы, а не та которую мы открыли
$(document).ready(function() {
e = document.getElementsByTagName('div');
for (var k = 0; k < e.length; k++) {
if (e[k].className.indexOf('shareblock') != -1) {
if (e[k].getAttribute('data-url') != -1) u = e[k].getAttribute('data-url');
if (e[k].getAttribute('data-title') != -1) t = e[k].getAttribute('data-title');
if (e[k].getAttribute('data-image') != -1) i = e[k].getAttribute('data-image');
if (e[k].getAttribute('data-description') != -1) d = e[k].getAttribute('data-description');
if (e[k].getAttribute('data-path') != -1) f = e[k].getAttribute('data-path');
if (!f) {
function path(name) {
var sc = document.getElementsByTagName('script'),
sr = new RegExp('^(.*/|)(' + name + ')([#?]|$)');
for (var i = 0, scL = sc.length; i < scL; i++) {
var m = String(sc[i].src).match(sr);
if (m) {
if (m[1].match(/^((https?|file)\:\/{2,}|\w:[\/\\])/)) return m[1];
if (m[1].indexOf("/") == 0) return m[1];
b = document.getElementsByTagName('base');
if (b[0] && b[0].href) return b[0].href + m[1];
else return document.location.pathname.match(/(.*[\/\\])/)[0] + m[1];
}
}
return null;
}
f = path('share.js');
}
if (!u) u = location.href;
if (!t) t = document.title;
function desc() {
var meta = document.getElementsByTagName('meta');
for (var m = 0; m < meta.length; m++) {
if (meta[m].name.toLowerCase() == 'description') {
return meta[m].content;
}
}
return '';
}
if (!d) d = desc();
u = encodeURIComponent(u);
t = encodeURIComponent(t);
t = t.replace('\'', '%27');
i = encodeURIComponent(i);
d = encodeURIComponent(d);
d = d.replace('\'', '%27');
var vkImage = '';
if (i != 'null' && i != '') vkImage = '&image=' + i;
var s = new Array( //Твиттер массив
'"#" data-count="twi" onclick="window.open(\'https://twitter.com/intent/tweet?text=' + t + '&url=' + u + '\', \'_blank\', \'scrollbars=0, resizable=1, menubar=0, left=100, top=100, width=550, height=440, toolbar=0, status=0\');return false" title="Добавить в Twitter"'
);
var so = new Array ( //Вконтакте массив
'"#" data-count="vk" onclick="window.open(\'http://vk.com/share.php?url=' + u + '&title=' + t + vkImage + '&description=' + d + '\', \'_blank\', \'scrollbars=0, resizable=1, menubar=0, left=100, top=100, width=550, height=440, toolbar=0, status=0\');return false" title="Поделиться В Контакте"'
);
var l = ''; //Твиттерим
for (j = 0; j < s.length; j++) l +=
'<div class="twbtns"><a rel="nofollow" href=' + s[0] + ' target="_blank"></a></div>';
var lo = ''; //Вконтактерим
for (jo = 0; jo < so.length; jo++) lo +=
'<div class="vkbtns"><a rel="nofollow" href=' + so[0] + ' target="_blank"></a></div>';
e[k].innerHTML = '<div id="share">' + l + lo +'</span>'; //Показываем в fancybox
}
};
});
|
Вопрос решен.
|
| Часовой пояс GMT +3, время: 04:07. |