检测用户是否喜欢我的FB页面,并删除DIV

时间:2012-12-19 21:23:15

标签: javascript jquery facebook facebook-like facebook-javascript-sdk

我为我的网站制作了一个弹出框,邀请访问者在FB上看我的页面。我想知道是否有办法检测喜欢该页面的人,并删除弹出框(= div),因此每次浏览网站时都不会加载它们。

不知道这是否可行,但我想知道。这是我的脚本,以防你需要它:

<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
var dom = {};
dom.query = jQuery.noConflict(true);
var time = 11;

window.setInterval(test, 1000);

function test()
{
    time -=1;
    dom.query('#fb-timer').html(time); 

    if(time == 0)        
    {
        dom.query('#fb-popupdiv').remove();
    }
} 
function setCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
   else var expires = "";
   document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
       if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

    }
    return null;
}

function eraseCookie(name) {
    setCookie(name,"",-1);
}
dom.query(document).ready(function() {
    var val = readCookie("popupAlreadyShown");
    if (!val) {
        setCookie("popupAlreadyShown", 1, 1);
        dom.query("#fb-popupdiv").show();
    } else {
}
});
</script>

提前致谢!

2 个答案:

答案 0 :(得分:2)

您想看一下edge.Create事件。订阅它,并在其中执行您想要的任何功能。例如:

<script type='text/javascript'>
    window.fbAsyncInit = function () {
        FB.init({ appId: '1234567890', status: true, cookie: true,
            xfbml: true
        });

        FB.Event.subscribe('edge.create', function (response) {
            $("#facebookdiv").hide();
            // set a variable or a cookie so it doesn't show on future requests
        });
</script>

从我关联的页面上的Facebook文档中

edge.create - 当用户喜欢某事时触发(fb:like)。回调函数的响应参数包含喜欢的URL:

"http://www.example.com/article1.php"

答案 1 :(得分:2)

除非您可以访问用户的喜欢,否则您无法从Facebook的结尾知道该页面是否被喜欢。但为此你必须通过facebook connect获得用户注册。

大多数类似的大门/弹出窗口都使用cookie来跟踪类似情况。当用户喜欢该页面时,facebooks的edge.create用于收听类似内容并创建cookie。如果cookie被清除,弹出窗口将再次出现。

有关fb事件的更多信息: https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/