Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 捕捉Facebook评论框的关闭或发布到Facebook事件_Javascript_Facebook_Facebook Like_Facebook Javascript Sdk - Fatal编程技术网

Javascript 捕捉Facebook评论框的关闭或发布到Facebook事件

Javascript 捕捉Facebook评论框的关闭或发布到Facebook事件,javascript,facebook,facebook-like,facebook-javascript-sdk,Javascript,Facebook,Facebook Like,Facebook Javascript Sdk,新的类似Facebook的按钮有一个评论框,如下面的截图所示 我正在使用Facebook的XFBML解决方案在我的页面上显示like按钮 使用JavaScript,我成功地捕捉到当按下like按钮时触发的事件,但现在我需要一种方法来检测用户是否按下Post to Facebook按钮或关闭对话框 以下是适用于like按钮事件的代码段: (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.g

新的类似Facebook的按钮有一个评论框,如下面的截图所示

我正在使用Facebook的XFBML解决方案在我的页面上显示like按钮

使用JavaScript,我成功地捕捉到当按下like按钮时触发的事件,但现在我需要一种方法来检测用户是否按下Post to Facebook按钮或关闭对话框

以下是适用于like按钮事件的代码段:

(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=1427863577435532";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));


window.fbAsyncInit = function() {
    FB.init({
        status: true,
        cookie: true,
        xfbml: true
    });

    FB.XFBML.parse();

        FB.Event.subscribe('edge.create', function(href) {
        console.log("edge.create");
    });
}
我用来显示按钮的代码是:

<fb:like href="https://developers.facebook.com/docs/plugins/" layout="box_count" action="like" show_faces="false" share="false"></fb:like>
我需要制定的最终解决方案是:

完成类似操作时将数据存储到数据库中[设法解决此问题] 关闭对话框或按下“发布到FaceBook”按钮时,当用户完成与对话框的交互时,重新加载页面
有没有人有好主意或建议来解决这个问题或将我推向正确的方向?

我通过使用jQuery查看Facebook弹出窗口的高度来解决这个问题,然后让一个计时器在定义的时间间隔内查看弹出窗口在关闭/隐藏弹出窗口时是否仍有相同的宽度变化

使用jQuery获取类似Facebook的按钮的iframe。最简单的方法是将like按钮包装在div中。一旦有了iframe,就将其放入名为fb_like_iframe的变量中

接下来使用以下代码:

var pollTimerFB = window.setInterval(function() {
    var fb_iframe_height = jQuery(fb_like_iframe).height(); 
    if (fb_iframe_height < 100) {
        window.clearInterval(pollTimerFB);
        // Code that needs to be executed when the FaceBook popup is closed
        // comes here
    }
}, 1000);
使用上述方法将在用户每次按下类似FaceBook的按钮时启动轮询机制

希望Facebook能很快添加一些事件,以便在弹出窗口关闭时使用

var pollTimerFB = window.setInterval(function() {
    var fb_iframe_height = jQuery(fb_like_iframe).height(); 
    if (fb_iframe_height < 100) {
        window.clearInterval(pollTimerFB);
        // Code that needs to be executed when the FaceBook popup is closed
        // comes here
    }
}, 1000);
FB.Event.subscribe('edge.create', function(href) {
    // Code to get iFrame
    // Code (from above) to poll if window is open
});