Клуб пользователей блока «Поделиться»

Неадекватно работает метод updateContent

При вызове метода updateContent с обновлением параметра url, ссылка на кнопках соцсетей не меняется. При этом в свойствах объекта YaShare видно, что url обновился. Кроме того, после updateContent перестает открываться pop-up / curtain с кнопками соцсетей, по-видимому, что-то ломается, однако ошибок не выдается. Пример

https://jsfiddle.net/vadus/yvtdp7rs/16/

Подмена параметра url необходима, к примеру, на слайд-шоу, когда юзер должен иметь возможность поделиться конкретной (текущей) картинкой из слайд-шоу и в соцсеть должна засылаться соответствующая этой картинке ссылка.

13 комментариев
Вадим Гунько
11 января 2021, 17:19
Пост опубликован, но реакции на него пока нет. Большая просьба разобраться с этим, а то приходится пользоваться устаревшими версиями YandexShare, причем разными для десктопной и мобильной версии:)
Сергей Тощилин
Сотрудник Яндекса11 января 2021, 17:39
> Пост опубликован, но реакции на него пока нет.


Добрый день!


Вчитаюсь в проблему на этой неделе, отпишусь в пост
Вадим Гунько
11 января 2021, 20:11
В дополнение:
в коде блока ya-share2__container я вижу
<div class="ya-share2__copied-tooltip">Ссылка скопирована</div>
этот тултип, по-видимому должен показываться после клика по "Скопировать ссылку". однако он не показывается, просто закрывается оверлей.
Сергей Тощилин
Сотрудник Яндекса11 января 2021, 20:18
Вадим Гунько,
разбираюсь с проблемой


По всей видимости ссылки на DOM-элементы (в частности, попап, крестик в мобильной шторке и тултип) не обновляются после вызова updateContent


Нужно поправить будет
Сергей Тощилин
Сотрудник Яндекса29 января 2021, 17:35
Добрый вечер!


Выкатили фикс, можете проверить, пожалуйста?
Вадим Гунько
1 февраля 2021, 21:17
Сергей Тощилин,
 в фиддле заиграло, как надо. На рабочем сайте проверю на этой неделе, отпишусь в пост =)
Сергей Тощилин
Сотрудник Яндекса1 февраля 2021, 21:27
Вадим Гунько,
большое спасибо, буду ждать!
Вадим Гунько
8 февраля 2021, 18:51
Сергей Тощилин,
Всё-таки работает не совсем так, как хотелось бы.
В моём примере https://jsfiddle.net/vadus/yvtdp7rs/16/  в настройках первоначально 
 url: 'https://www.google.com/'

и на событие "onshare" навешана подмена url на 'https://www.yahoo.com'
но обратите внимание, когда вы кликаете на кнопку Facebook, открывается окно шеринга, в которое передается первоначальный параметр url - 'https://www.google.com/'. 
а если окно закрыть и открыть снова, то url уже подменился.
то есть url не успевает подменяться при клике на кнопку соцсети. видимо, для того, чтоб желаемый эффект срабатывал, надо подменять url не по событию onshare, которое соответствует нажатию кнопки соцсети,  а по событию открытия поп-апа. но, похоже, такое событие не предусмотрено в API
Сергей Тощилин
Сотрудник Яндекса9 февраля 2021, 11:02
Вадим Гунько,
да, такого события нет

не очень понятно, в чем логика подмены урла при открытии попапа — можно же изначально сгенерировать верный вариант
Вадим Гунько
11 февраля 2021, 16:14
Сергей Тощилин,
я приводил пример слайдшоу. листаю картинки и хочу поделиться конкретной (текущей) картинкой из него. для этого при листании подменяется тег og:url, тогда при шеринге (если в API блока "поделиться" можно вовремя обновить url), соцсеть подцепляет этот url и по нему, соответственно и нужную картинку.
Вадим Гунько
11 февраля 2021, 16:24
Сергей Тощилин,
кстати, в прежней версии API (//yandex.st/share/share.js) это работало, по событию onbeforeopen можно было обновить url при открытии попапа, Например тут мы до сих пор используем старую версию API.
Сергей Тощилин
Сотрудник Яндекса11 февраля 2021, 23:33
Вадим Гунько,
как вариант можно ререндерить поделяшку заново при листании картинки
пока добавлять новые хуки на события в апи не планируется
Вадим Гунько
12 февраля 2021, 13:55
Сергей Тощилин,
Да, такой вариант вполне рабочий, но просто придется навешивать это поведение на все наши разнообразные слайдшоу и листалки, привязывая к API "поделяшки", которое может изменяться, в отличие от og:url