Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2013, 14:53
Аспирант
Отправить личное сообщение для dolte Посмотреть профиль Найти все сообщения от dolte
 
Регистрация: 04.09.2013
Сообщений: 37

Работа с 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/
2.Закрываем картинку. Обновляем страницу F5, закрываем открывшееся изображение.

3. Открываем первую картинку, жмем кнопку Twitter, видим содержание:
Код:
Заголвок http://mryayoo.ru/#0
т.е скрипт отрабатывает только первоначальный загруженный адрес. При перемотке изображений так-же не работкает как надо.

Вопрос:
Как и что куда дописать, чтобы при первом открытии картинки содержание твиттера было идентично содержанию адресной строки, аналогично при прокрутке ?
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2013, 16:40
Аспирант
Отправить личное сообщение для dolte Посмотреть профиль Найти все сообщения от dolte
 
Регистрация: 04.09.2013
Сообщений: 37

Решил вопрос так:

function shareLoad() {
	$.getScript('share.js');
}
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2013, 17:11
Аспирант
Отправить личное сообщение для dolte Посмотреть профиль Найти все сообщения от dolte
 
Регистрация: 04.09.2013
Сообщений: 37

Всплыла другая проблема, при шаринге вконтакте, берутся все картинки со страницы, а не та которую мы открыли

$(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
        }
    };
});
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2013, 17:28
Аспирант
Отправить личное сообщение для dolte Посмотреть профиль Найти все сообщения от dolte
 
Регистрация: 04.09.2013
Сообщений: 37

Вопрос решен.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fancybox и AJAX alzasr jQuery 4 19.01.2014 22:45
Помогите с fancyBox Le-mark43 Events/DOM/Window 6 20.12.2012 08:08
fancybox на кнопке, которая подгружается засчет $.load Olesya Общие вопросы Javascript 0 16.08.2012 17:27
Загрузить поочерди два разных объекта в Fancybox prog90 Общие вопросы Javascript 0 14.01.2012 17:19
Вставка ссылки в титлы jquery fancybox lovezoom jQuery 0 22.08.2011 22:36