Facebook feed:FB.ui()在Firefox中工作但在Chrome中出错(Safari,IE)

时间:2011-07-14 15:38:07

标签: javascript facebook xfbml

我为网站设置了自定义Facebook分享按钮。当我在Firefox中单击该按钮时,它为我提供了一个很好的共享对话框(弹出窗口),其中包含我定义的所有var。 Facebook上发布到我的墙上,一切都很好!但是Chrome,Safari,IE中的相同代码都失败了。它在弹出窗口中抛出一个错误:“发生错误。请稍后再试。”

我正在使用的javascript(当然还有OG元标记): 我使用此脚本的网站:http://www.henkeningrid.org(单击引号时会激活Like按钮)

        el.find('a.facebook-feed').click(function() {
        var quote = $(this).parents().find('h1').html();
        var url = $(this).parents('article').attr('data-url');
        var publish = {
            method: 'feed',
            message: '',
            name: 'Henk en Ingrid',
            caption: '“'+quote+'”',
            description: ('De wereld volgens Henk en Ingrid.'),
            link: 'http://www.henkeningrid.org/nl/quote/'+url,
            picture: 'http://www.henkeningrid.org/site/gfx/fb_preview.png',
            actions: [{name: 'Henk en Ingrid', link: 'http://www.henkeningrid.org/'}],
            user_message_prompt: ''
        };
        FB.ui(publish);
        //return false;
    });

3 个答案:

答案 0 :(得分:1)

可能是因为你插入了两次sdk;使用异步方法在标题和正文中。我有同样的问题。删除了标题中的行,然后就可以了。

答案 1 :(得分:1)

我们在新版本的JavaScript SDK中遇到了这个问题 - 奇怪的是它只发生在Chrome上,但解决方案确实是删除SDK的同步版本。我们保留了异步代码,它修复了我们在所有浏览器中看到的问题。

<div id="fb-root"></div>
<script>
        (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=XXXXXX";
        fjs.parentNode.insertBefore(js, fjs);
    } (document, 'script', 'facebook-jssdk'));
</script>

答案 2 :(得分:0)

我遇到了同样的问题,而你的“异步加载” - 指向了正确的方向。如果您正在使用jQuery,我的建议是使用此处所述的回调:https://developers.facebook.com/docs/javascript/howto/jquery/ 为我工作!

$(document).ready(function() {
    $.ajaxSetup({ cache: true });
    $.getScript('//connect.facebook.net/en_UK/all.js', function(){
        FB.init({
            appId: '<?=FACEBOOK_APP_ID?>'
        });
        alert('FB loaded');
        yourFunction();
    });
});