158

以下链接用于在 Twitter 上共享页面:

http://twitter.com/share

Facebook 是否有不需要 JavaScript 的类似选项?

我知道http://facebook.com/sharer.php,但这需要手动插入 get 参数(我不会这样做),或者使用 JavaScript(这不适合我的情况)。

4

11 回答 11

224

你可以使用

<a href="https://www.facebook.com/sharer/sharer.php?u=#url" target="_blank">
    Share
</a>

目前,如果不将当前 url 作为参数传递,则没有共享选项。您可以使用间接的方式来实现这一点。

  1. 创建一个服务器端页面,例如:“/sharer.aspx”
  2. 每当您需要共享功能时链接此页面。
  3. 在“sharer.aspx”中获取引用 URL,并将用户重定向到“https://www.facebook.com/sharer/sharer.php?u={referer}”

示例 ASP .Net 代码:

public partial class Sharer : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var referer = Request.UrlReferrer.ToString();

        if(string.IsNullOrEmpty(referer))
        {
            // some error logic
            return;
        }

        Response.Clear();
        Response.Redirect("https://www.facebook.com/sharer/sharer.php?u=" + HttpUtility.UrlEncode(referer));
        Response.End();
    }
}
于 2013-01-31T03:54:52.157 回答
149

Ps 2:正如Justin所指出的,请查看Facebook 的新分享对话框。将为后代留下答案。这个答案已经过时了


简短的回答,是的,Facebook 有一个类似的选项,不需要 javascript(嗯,有一些不是强制性的最小内联 JS,请参阅注释)。

Ps:该onclick部分仅帮助您稍微自定义弹出窗口,但不是代码工作所必需的......没有它它会工作得很好。

Facebook

<a href="https://www.facebook.com/sharer/sharer.php?u=URLENCODED_URL&t=TITLE"
   onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;"
   target="_blank" title="Share on Facebook">
</a>

推特

<a href="https://twitter.com/share?url=URLENCODED_URL&via=TWITTER_HANDLE&text=TEXT"
   onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;"
   target="_blank" title="Share on Twitter">
</a>
于 2013-11-28T09:39:20.570 回答
45

可以在您的代码中包含 JavaScript 并且仍然支持非 JavaScript 用户。

如果用户在未启用 JavaScript 的情况下单击以下任何链接,它只会打开一个新选项卡:

<!-- Remember to change URL_HERE, TITLE_HERE and TWITTER_HANDLE_HERE -->
<a href="http://www.facebook.com/sharer/sharer.php?u=URL_HERE&t=TITLE_HERE" target="_blank" class="share-popup">Share on Facebook</a>
<a href="http://www.twitter.com/intent/tweet?url=URL_HERE&via=TWITTER_HANDLE_HERE&text=TITLE_HERE" target="_blank" class="share-popup">Share on Twitter</a>
<a href="http://plus.google.com/share?url=URL_HERE" target="_blank" class="share-popup">Share on Googleplus</a>

因为它们包含share-popup类,我们可以在 jQuery 中轻松引用它们,并更改窗口大小以适应我们共享的域:

$(".share-popup").click(function(){
    var window_size = "宽度=585,高度=511";
    var url = this.href;
    var domain = url.split("/")[2];
    开关(域){
        案例“www.facebook.com”:
            window_size = "宽度=585,高度=368";
            休息;
        案例“www.twitter.com”:
            window_size = "宽度=585,高度=261";
            休息;
        案例“plus.google.com”:
            window_size = "宽度=517,高度=511";
            休息;
    }
    window.open(url, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,' + window_size);
    返回假;
});

不再有丑陋的内联 JavaScript,或无数的窗口大小更改。它仍然支持非 JavaScript 用户。

于 2014-02-12T13:31:05.947 回答
27

试试这些链接类型实际上对我有用。

https://www.facebook.com/sharer.php?u=YOUR_URL_HERE
https://twitter.com/intent/tweet?url=YOUR_URL_HERE
https://plus.google.com/share?url=YOUR_URL_HERE
https://www.linkedin.com/shareArticle?mini=true&url=YOUR_URL_HERE
于 2018-06-08T19:03:51.643 回答
10

我知道这是一个旧线程,但我不得不为一个项目做类似的事情,我想分享 2019 年的解决方案。

新的dialogAPI 可以获取参数并在没有任何 javascript 的情况下使用。

参数是:

  • app_id(必需的)
  • href您希望共享的页面的 URL,如果没有通过,将使用当前 URL。
  • hashtag必须有#符号,例如#amsterdam
  • quote要与链接共享的文本

您可以在没有任何 javascript 的情况下创建一个 href。

<a href="https://www.facebook.com/dialog/feed?&app_id=APP_ID&link=URI&display=popup&quote=TEXT&hashtag=#HASHTAG" target="_blank">Share</a>

需要考虑的一件事是 Facebook 正在使用Open Graph,因此如果您的 OG 标签设置不正确,您可能无法获得您想要的结果。

于 2019-06-10T10:57:54.617 回答
7

您可以使用 Feed URL “Direct URL” 选项,如Feed Dialog页面所述:

您还可以通过显式将用户定向到 /dialog/feed 端点来调出 Feed 对话框:

  https://www.facebook.com/dialog/feed?  
  app_id=123050457758183&
  link=https://developers.facebook.com/docs/reference/dialogs/&
  picture=http://fbrell.com/f8.jpg&
  name=Facebook%20Dialogs&
  caption=Reference%20Documentation&
  description=Using%20Dialogs%20to%20interact%20with%20users.&
  redirect_uri=http://www.example.com/response`

看起来他们不再在文档中的任何地方提及“共享”;这已被添加到您的 Feed 的概念所取代。

于 2012-10-09T13:06:27.120 回答
6

很多这些答案不再适用,所以这是我的:

使用Facebook 开发页面中描述的共享对话框。

例子:

https://www.facebook.com/dialog/share?
  app_id=<your_app_id>
  &display=popup
  &href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F
  &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer

但是您必须输入您注册的 app_id、href 和重定向 uri。

于 2014-09-09T02:11:34.400 回答
2

对于那些希望使用 javascript 但不想使用 Facebook javascript 库的人:

<a id="shareFB" href="https://www.facebook.com/sharer/sharer.php?u=URLENCODED_URL&t=TITLE"
   onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;"   target="_blank" title="Share on Facebook">Share on Facebook</a>
<script type="text/javascript">document.getElementById("shareFB").setAttribute("href", "https://www.facebook.com/sharer/sharer.php?u=" + document.URL);</script>

即使禁用了 javascript 也可以工作,但如果启用了 javascript,则会为您提供一个带有共享预览的弹出窗口。

在不使用任何 Facebook js 间谍软件的情况下节省一次点击:)

于 2014-05-14T17:33:34.953 回答
2

添加到 @rybo111 的解决方案中,LinkedIn 共享将是这样的:

<a href="http://www.linkedin.com/shareArticle?mini=true&url={articleUrl}&title={articleTitle}&summary={articleSummary}&source={articleSource}" target="_blank" class="share-popup">Share on LinkedIn</a>

并将其添加到您的 Javascript 中:

case "www.linkedin.com":
    window_size = "width=570,height=494";
    break;

根据 LinkedIn 文档:https ://developer.linkedin.com/docs/share-on-linkedin (请参阅“自定义网址”部分)

对于任何感兴趣的人,我在带有 LinkedIn 徽标的 Rails 应用程序中使用了它,所以如果它可能有帮助,这是我的代码:

<%= link_to image_tag('linkedin.png', size: "50x50"), "http://www.linkedin.com/shareArticle?mini=true&url=#{job_url(@job)}&title=#{full_title(@job.title).html_safe}&summary=#{strip_tags(@job.description)}&source=SOURCE_URL", class: "share-popup" %>
于 2014-09-04T20:33:01.800 回答
1

如何分享内容:https ://developers.facebook.com/docs/share/

你必须选择不使用JS,使用已弃用的功能,每天检查,或者按照使用JS的方式玩得开心。

于 2012-02-03T00:50:58.970 回答