JavaScript: обнаружение клика «Мне нравится»

0

Я использую этот код для обнаружения как щелчок:

FB.Event.subscribe('edge.create',
            function(response) {

                //to do...

            } 
);

и он работает хорошо, так что в чем проблема. Когда пользователь нажимает подобную кнопку, он должен открыть всплывающее окно. Я использую синхронный вызов, который не блокирует всплывающие окна.

 $("#div1").click(function(e) {
    e.preventDefault();

    $.ajax({
      url: "./ajax.php",
      async: false,
      data: "POST",
      success:  function() {
        window.open("./ajax.php","_blank"); 

      }
    });
  });

Этот код отлично подходит для кнопок, пользовательских divs, изображений... но он не будет работать для подобного объекта, я попытался поместить свойство id в похожий объект или добавить как объект в пользовательский div и обнаружить пользовательский/внешний div-щелчок, но это не сработает.

Я не могу использовать это с FB.Event.subscribe потому что он асинхронно, а всплывающие блокировки блокируют всплывающее окно. Поэтому мне нужен другой способ обнаружить, как щелчок.

  • 0
    Вы, вероятно, не можете, если вы не подключитесь к событиям, предоставленным Facebook, так как кнопка находится в iframe из другого домена.
  • 0
    Разве кнопка «Мне нравится» в iframe из другого домена? Если это так, вы не можете напрямую перехватывать события в этом iframe, если API FB не предоставит вам доступ.
Теги:
facebook-like

2 ответа

1

Это классическая проблема с iFrames и сторонним контентом.

Один из способов сделать это - разместить прозрачный div над элементом FB. Наш обработчик кликов для этого div при запуске открывает всплывающее окно. Затем, в том же обработчике, мы затем вызываем щелчок на элементе FB под ним. Если вы публикуете скрипку, я вижу, насколько это возможно с вашей настройкой.

  • 0
    Два клика или один?
  • 0
    @ Djomla1989 "Два щелчка или один?" - Твой выбор. Вы можете сделать так, чтобы при первом нажатии срабатывал только ваш обработчик, а при втором нажатии работала кнопка facebook.
0

Подобная кнопка находится в iFrame, поэтому вы не можете присоединить обработчик событий. Но вы можете добавить вызов AJAX к функции Facebook:

FB.Event.subscribe('edge.create',
   function(response) {
     $.ajax({
      url: "./ajax.php",
      async: false,
      data: "POST",
      success:  function() {
        window.open("./ajax.php","_blank"); 
      }
    });
   } 
);
  • 0
    Это асинхронный вызов, поэтому блокировщик всплывающих окон заблокирует мое всплывающее окно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню