propovednik
@propovednik

Есть ли аналог mailru.app.events.like для сайтов?

Социальные сети — прекрасный инструмент маркетинга, но иногда они не хотят дать своими функциями возможность сэкономить пользователю. Передо мной стоит задача: есть онлайн-магазин, там есть кнопки «нравится» (вполне стандартные, т.е. не в виде собственного велосипеда, который по щелчку запрашивает разрешение на добавление лайка, а обычные такие кнопки). Необходимо перехватить событие лайканья и отлайканья, а именно на нажатие «нравится» через ajax подгружать разовый код купона на скидку и показывать пользователю.

Если бы магазин был приложением, то все было бы просто — есть событие mailru.app.events.like, однако для сайтов этого события нет. Лайк/дизлайк создают куки, но они для домена *.mail.ru. Сами кнопки находятся в iframe, содержимое которого также получить нельзя.

Возможно кто-нибудь сталкивался с подобной задачей — подскажите как это можно и можно ли реализовать.

Моральная сторона вопроса: социальные сети НЕ против стимулирования нажатий на «нравится», в случае если всё честно для пользователя.
  • Вопрос задан
  • 3302 просмотра
Пригласить эксперта
Ответы на вопрос 2
akkuch
@akkuch
Если, например, использовать jQuery, то можно сделать так:
$("iframe").contents().find("#like-button").click(function() {
    //your code    
});

Если на странице iframe-ов не один, то селектор, очевидно, надо уточнить.
Ответ написан
Jons
@Jons
В моем случае на странице было с десяток кнопок лайк и нужно было понять по какой из них кликнули.

<a target="_blank" class="mrc__plugin_uber_like_button"
data-good-id="МойИтемАйди"
href="http://connect.mail.ru/share?share_url=<?=$urly?>"
data-mrc-config="{'type' : 'small', 'caption-mm' : '2', 'caption-ok' : '1', 'width' : '50px', 'nc' : '1', 'nt' : '1'}">Нравится


Отловил что виджет вставляет ифрейм с кнопками перед .
Так же есть у них отлавливатели эвентов клика:
http://api.mail.ru/2012/01/share_and_event/
они отдают result.id так вот ифрейм на странице генерируется именно с этим id. Итого я отловил нужное мне значение так:

mailru.loader.require('api', function(){
mailru.events.listen(mailru.plugin.events.liked, function(result, params, elsevar){
good_id = $("#"+result.id).parent().next().attr("data-good-id");
});
mailru.events.listen(mailru.plugin.events.unliked, function(result){
// console.log(result.type);
// Анлайки всё равно не пашут :)
});
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы