【问题标题】:Facebook Share Button for Dynamic Url动态网址的 Facebook 分享按钮
【发布时间】:2014-02-08 12:59:15
【问题描述】:

我有一个带有重写 url 的动态页面。我想在其中添加一个 facebook 分享按钮。所以用户点击分享按钮可以分享页面。但是 facebook 共享开发者页面要求提供特定的 url。不知道如何分享动态生成的 url。

这是我找到的一些用于捕获 url 的代码。但我不知道,如何将其包含在 facebook 代码中。

jQuery(document).ready(function() {
    var href = jQuery(location).attr('href');
    var url = jQuery(this).attr('title');
    jQuery('#current_title').html(href);
    jQuery('#current_url').html(url);
});

Facebook 分享按钮的 HTML 部分

<div class="fb-share-button" data-href="http://developers.facebook.com/docs/plugins/" data-type="button"></div>

请帮忙

非常感谢

【问题讨论】:

    标签: javascript jquery facebook-like facebook-social-plugins


    【解决方案1】:

    这也可以使用php来完成

    <?php  
         $protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || 
         $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";  
         $CurPageURL = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];  
    ?>
    
    <div class="fb-share-button" data-href=" <?php $CurPageURL ?> " data-layout="button_count" data-size="large">
       <a target="_blank" 
           href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2F
           <?php $CurPageURL ?>
           %2F&amp;src=sdkpreparse" 
           class="fb-xfbml-parse-ignore">Share
       </a>
    </div>
    

    【讨论】:

    • 这是断章取义的答案 - SO 已经用 javascript jquery facebook-like facebook-social-plugins 标记了这个问题
    【解决方案2】:

    这对我有用:

    <script language="javascript">
        function fbshareCurrentPage()
        {window.open("https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(window.location.href)+"&t="+document.title, '', 
        'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');
        return false; }
    </script>
    

    然后用链接调用代码:

    <a href="javascript:fbshareCurrentPage()" target="_blank" alt="Share on Facebook">Facebook</a>
    

    如果您希望它是直接链接而不是在窗口中打开,请在函数中使用:

    window.location.href="https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(window.location.href)+"&t="+document.title;
    


    可能的 jquery 解决方案:

    <a class="fbsharelink" data-shareurl="YOURLINK">Facebook</a>
    
    $('.fbsharelink').click( function() 
    {
        var shareurl = $(this).data('shareurl');
        window.open('https://www.facebook.com/sharer/sharer.php?u='+escape(shareurl)+'&t='+document.title, '', 
        'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');
        return false;
    });
    

    【讨论】:

    • 这是一个非常简单的解决方案,让我可以跳过所有 FB SDK JS 设置步骤。使用 localhost 时,我注意到它不使用我会尝试给它的 url 或标题.. 它只会显示标题和 url 的“本地主机”。我必须实际上传它才能看到它识别实际的域和页面标题。无论如何.. 非常酷 - 谢谢!
    • escape() 已弃用。请改用encodeURIComponent()
    【解决方案3】:

    我认为最简单的解决方案就是这个。它适用于最复杂的 URL,假设这是您的 URL

    http://dramatainment.com/videos.php?v=000014
    

    这就是你将如何修改你的 Facebook 分享按钮代码

    <div class="fb-share-button" data-href="http://dramatainment.com/videos.php?v=<?php echo $v; ?>" data-layout="button" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdramatainment.com%2Fvideos.php&amp;src=sdkpreparse">Share</a></div>
    

    刚刚添加了这样的动态网址

    data-href="http://dramatainment.com/videos.php?v=<?php echo $v; ?>"
    

    【讨论】:

    • 我了解您更改的第一部分,但您是否更改了第二部分? href="" ?
    • 我只是重写了我更改的部分,即 data-href 部分。
    【解决方案4】:

    使用它让 Facebook 的 api 重新解析您的页面

      FB.XFBML.parse();
    

    【讨论】:

      【解决方案5】:

      不要在“删除现有链接 (https://developers.facebook.com/docs/plugins/) 的 URL 中输入任何内容,并像往常一样在页面中包含代码。

      点赞或分享按钮会选择您当前页面的链接

      【讨论】:

      • 为我工作。警告:它会在页面加载时获取 url,因此如果您正在处理推送状态,它不会在点击时获取 url。
      【解决方案6】:

      您可以使用获取网址

      var href = window.location

      您可以使用

      获得页面标题

      var title = document.title

      那些简单的任务不需要使用 jQuery。

      要使 FB 共享按钮动态化,您必须重新加载或编辑其数据属性以匹配当前值。此外,在快速查看 GB 共享按钮的文档后,没有选项可以仅设置 HREF 标题。可以在here 找到文档。

      因此,对于您的示例,在更改 url 后,还要运行以下代码:

      jQuery(document).on('ready', function($){
          var url = window.location;  
          $('.fb-share-button').attr('data-href', url);
      });
      

      【讨论】:

      • 感谢您的支持和快速回复。这是FB生成的分享按钮代码..
      • 我只需要 html 部分,而不是脚本。还要将您的代码包装在 ` 中以正确格式化。
      • 嗨 MJ,我刚刚更新了我的查询.. 这就是您要查找的内容。请恢复
      • 我无法将 url 值替换为上面的代码..我哪里出错了..你能帮助 MJ..谢谢
      猜你喜欢
      • 2013-03-17
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多