javascript - Facebook 分享插件按钮未分享正确的网址

标签 javascript ajax facebook post facebook-javascript-sdk

我的生产站点可以在这里找到:http://infinite-brushlands-3960.herokuapp.com/

我已按照此处的说明设置了 javascript SDK:https://developers.facebook.com/docs/javascript/quickstart/v2.5

当用户单击“共享此时间表”时,将运行以下代码:

$('#share_schedule').click(function(){
    if ($('#share_url_ul').children().length >= 1){
        $('#share_url_ul').empty();
    }
    // Take care of no classes case "You cannot share an empty schedule."
    $.ajax({
        method: "POST",
        url: "/share/",
        data: JSON.stringify(localStorage),
        contentType: "application/json; charset=utf-8",
        dataType: "text",
        success: function(response){
            var shared_url = document.createElement('a');
            $(shared_url).css('display', 'block');
            $(shared_url).attr('href', window.location.href + 'shared/' + response);
            $(shared_url).attr('id', 'share_link');
            shared_url.innerHTML = window.location.href + 'shared/' + response;
            $('#share_url_ul').append(shared_url);

            $('#fb_share_btn').attr('data-href', window.location.href + 'shared/' + response);
        },
        error: function(error){
            console.log(error);
        }
    });
});

但是,尽管将 facebook 按钮的 data-href 属性设置为我想要共享的 url 的行(如此处所述 https://developers.facebook.com/docs/plugins/share-button ),单击该按钮仍然会将我的主页共享到 facebook,而不是我在那里指定的链接。检查浏览器检查器中的按钮表明它确实具有正确的 url 作为 data-href 属性。

为什么插件没有共享正确的网址?

最佳答案

由于您要更改 ajax 加载时的按钮 url,因此您必须在更改属性后重新初始化 facebook 共享按钮。

尝试将其添加到成功回调的末尾

FB.XFBML.parse();

所以你应该有类似的东西

$('#share_schedule').click(function(){
    if ($('#share_url_ul').children().length >= 1){
        $('#share_url_ul').empty();
    }
    // Take care of no classes case "You cannot share an empty schedule."
    $.ajax({
        method: "POST",
        url: "/share/",
        data: JSON.stringify(localStorage),
        contentType: "application/json; charset=utf-8",
        dataType: "text",
        success: function(response){
            var shared_url = document.createElement('a');
            $(shared_url).css('display', 'block');
            $(shared_url).attr('href', window.location.href + 'shared/' + response);
            $(shared_url).attr('id', 'share_link');
            shared_url.innerHTML = window.location.href + 'shared/' + response;
            $('#share_url_ul').append(shared_url);

            $('#fb_share_btn').attr('data-href', window.location.href + 'shared/' + response);

            FB.XFBML.parse();

        },
        error: function(error){
            console.log(error);
        }
    });
});

关于javascript - Facebook 分享插件按钮未分享正确的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33841003/

相关文章:

javascript - Jest 中的 XMLHttpRequest 测试

javascript - ajax 成功后循环 JSON 响应

facebook - Facebook 中的 friend 的 friend (FOAF) 支持

javascript - 为什么通过 innerHTML 创建的脚本元素在附加到 DOM 时不会被执行,而通过 document.createElement 创建的相同脚本却会被执行?

javascript - 文件上传(拖放)不起作用

javascript - System.import promise 链接

javascript - 为什么我的 jQuery 事件处理程序在附加到多个元素时会失败?

python - 如何在pandas操作的网页上制作进度条

android - 适用于 iOS 和 Android 的更新 (2013) Facebook URI 方案是什么

Android - 移动点赞按钮