JavaScript:Detect';比如';点击

JavaScript:Detect';比如';点击,javascript,jquery,facebook-like,Javascript,Jquery,Facebook Like,我使用此代码检测类似的点击: FB.Event.subscribe('edge.create', function(response) { //to do... } ); 而且效果很好,那么我的问题是什么呢。 当用户单击like按钮时,应该会打开一个弹出窗口。 我使用的同步调用不会阻止弹出窗口 $("#div1").click(function(e) { e.preventDefault();

我使用此代码检测类似的点击:

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

                //to do...

            } 
);
而且效果很好,那么我的问题是什么呢。 当用户单击like按钮时,应该会打开一个弹出窗口。 我使用的同步调用不会阻止弹出窗口

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

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

      }
    });
  });
此代码适用于按钮、自定义div、图片。。。但它不适用于like对象,我尝试将'id'属性放入like对象,或将like对象附加到custom div,并检测custom/outer div单击,但它不起作用

我不能将它用于
FB.Event.subscribe
,因为它是异步的,弹出窗口拦截器会阻止弹出窗口。
所以我需要其他方法来检测,比如点击。

这是iFrame和第三方内容的典型问题


我们可以这样做的一种方法是在FB元素上方放置一个透明div。触发此div的单击处理程序时,将打开弹出窗口。接下来,在同一个处理程序中,我们触发单击它下面的FB元素。如果您发布了一个fiddle,我可以看看您的设置是否可行。

like按钮位于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"); 
      }
    });
   } 
);

你可能不能,除非你连接到facebook提供的事件,因为按钮在另一个域的iframe中。like按钮不是在另一个域的iframe中吗?如果是这样,除非FB API为您提供访问权限,否则您无法直接拦截该iframe中的事件。这是异步调用,因此弹出窗口拦截器将阻止我的弹出窗口。@Djomla1989“两次单击还是一次单击?”-您的选择。你可以这样做,在第一次点击时,只有你的处理程序启动,在第二次点击时,facebook按钮工作。