Facebook喜欢订阅活动不起作用

时间:2014-04-10 05:13:13

标签: javascript html facebook facebook-like

我想在用户点击我们的页面时触发一个脚本,但我的脚本没有错误,根本没有结果。不确定我写错了哪一件。

<body><div id="fb-root"></div>
<script>
window.fbAsyncInit = function(){
FB.init({
    appId  : '213893228799718',
    status : true,
    xfbml  : true
});
FB.Event.subscribe('edge.create', function(response) {
    alert('You liked the URL: ' + response);
});
};
(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_GB/all.js";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<?php
$a = '<iframe src="http://www.facebook.com/plugins/like.php?href='.urlencode('https://www.facebook.com/MyFanPage').'&amp;width&amp;layout=button_count&amp;action=like&amp;show_faces=false&amp;share=false&amp;height=21&amp;appId=213893228799718" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:21px;" allowTransparency="true"></iframe>';
echo $a;
?>
</body>

3 个答案:

答案 0 :(得分:0)

我想原因是你正在使用Like插件“iFrame方式”。事件侦听器无法侦听在其他文档上下文中发生的事件。

试试这样:

<html>
<body>
<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function(){
        FB.init({
            appId  : '213893228799718',
            status : true,
            xfbml  : true
        });
        FB.Event.subscribe('edge.create', function(response) {
            alert('You liked the URL: ' + response);
        });
    };

    (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_GB/all.js#xfbml=1&appId=213893228799718";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

</script>
<div class="fb-like" data-href="https://www.facebook.com/MyFanPage" data-layout="button" data-action="like" data-show-faces="true" data-share="true"></div>
</body>
</html>

答案 1 :(得分:0)

如果您仔细阅读documentation,则说 -

  

该按钮的XFBML和HTML5版本允许您通过FB.Event.subscribe订阅Facebook SDK for JavaScript中的'edge.create'事件。只要点击一个按钮,就会触发此JavaScript事件。

你正在使用IFrame版本,这就是它无法正常工作的原因。

此外,它不适用于localhost中的任何版本,可能是出于某些安全原因。


您可以使用 HTML5 版本 -

将您的js.src=...行替换为:

js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=213893228799718";

$a = '<iframe sr....
echo $a;

<div class="fb-like" data-href="https://www.facebook.com/MyFanPage" data-layout="button" data-action="like" data-show-faces="true" data-share="true"></div>

答案 2 :(得分:0)

Sahil写道,你需要使用 XFBML 标签

HTML:

<fb:like href="{Herf}" width="450"></fb:like>

JS:

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

    // FB event listener 
    FB.Event.subscribe('edge.create', function (url) {
     console.log('You liked the URL: ' + url);
    });
};

这是一个demo