2013-03-22 3 views
0

Я использую виджет sharethis hover (отображение: исправлено) вместе с адресом jQuery в одностраничном приложении. Все запросы pushState и загружаются через ajax. Поэтому, когда пользователь переходит с pageA.html на pageB.html, адрес обновляется через pushState. Однако, когда я нажимаю на определенную страницу в «share to facebook», страница, на которой я ввел сайт, делится вместо текущего. Явление можно увидеть на this website.Обновление виджета sharethis hover с новым адресом, заголовком и т. Д.

Я искал в объекте stWidget, где хранятся url, title и т. Д., Но я не могу его найти. Sharethis действительно скрытно об этом и продолжает ссылаться на this page, но это объясняет, как активировать виджет в загруженном контенте ajax, а не как обновлять виджет с новым адресом, заголовком и т. Д. Или как его модифицировать аналогичным образом.

+0

Это код ShareThis в другом окне? (например, iframe) Или ваши страницы загружаются в iframe, а код ShareThis является «внешним» в этом окне? – melancia

+0

Код ShareThis загружается через нормальную главу, и я заметил также частично через iframe. Если вы осмотрите dom, вы увидите, что iframe создан для fe http://seg.sharethis.com/getSegment.php?purl=http%3A%2F%2Fwww.posterlion.com%2Fposters%2Fpersonalities-posters&jsref=&rnd=1363961293908 Я попытался перезагрузить iframe, но это не помогло .... – bicycle

+0

Единственный вариант, который я вижу, - это удалить все кнопки и добавить их снова через .addEntry() Внезапно глупо, что они настолько скрыты, как что-то настолько простое как обновление переменных напрямую – bicycle

ответ

1

В конце концов я сделал обработчик следующим образом. Это глупо, но поскольку он удаляет кнопки и добавляет их снова, а не просто меняет переменные. Тем не менее я не понимаю, почему они настолько скрытно относятся к такой простой процедуре, как обновление головок кнопок.

function updateShareThisButtons() { 

    var services = []; 
    services.push("facebook", "googleplus","twitter","pinterest", "email", "sharethis"); 
    if($('#sthoverbuttons-chicklets').length == 0) 
     $('.sthoverbuttons-chicklets').attr('id','sthoverbuttons-chicklets') 

    $('#sthoverbuttons-chicklets').html(''); 
    for (var i = 0; i < services.length; i++) { 
      stWidget.addEntry({"service":services[i],"element":document.getElementById('sthoverbuttons-chicklets'),"url":$.address.baseURL(),"title":$.address.title(), "type":"large","summary":"summary"}); 
    }; 
}