没有JavaScript的Facebook分享链接


Answers:


190

你可以用

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

当前,如果不传递当前网址作为参数,则没有共享选项。您可以使用间接方式来实现。

  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();
    }
}

是的,这是一个不错的选择。但是,如果我希望以类似js版本的弹出窗口打开该怎么办?目前,它正在新标签页中打开!谢谢 !
Sagiruddin Mondal

这不是我要的。这要求您知道要共享href的页面的URL ,因此可以用页面的URL 替换页面中的“ #url” 。但是,使用twitter.com/share链接不需要您插入共享页面的URL。
Web_Designer 2013年

1
你知道如何发送图像吗?
miguelmpn 2015年

@miguelmpn(和较新的读者),请参见此答案。简而言之:og:image标签。
Mosh Feu

有针对该特定方法的文档吗?
Naved Khan

129

诗2:正如贾斯汀指出的,请查看Facebook的新“共享对话框”。将保留后代的答案。这个答案已经过时了


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

附: onclick部分仅可以帮助您自定义弹出窗口,但不需要代码才能正常工作……没有它就可以正常工作。

脸书

<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>

@superluminary ...它具有但不需要。我已经提到您可以将其删除(onclick部分)...它将仍然有效。但是我可以看到所有这些都还不是100%清晰...我将对其进行编辑。
金诺利麦纳2014年

2
优雅降级的好例子!
阿诺德·丹尼尔斯

6
+1。应更改http://www.facebook.com/sharer.phphttp://www.facebook.com/sharer/sharer.php
Nir Levy 2014年

1
我将更新此答案,以使人们按照Facebook的指示使用“ 共享对话框”
贾斯汀·斯基尔斯

什么是TWITTER_HANDLE参数?
hamidfzm 2016年

38

您可以在代码中包含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 =“ width = 585,height = 511”;
    var url = this.href;
    var domain = url.split(“ /”)[2];
    切换(域){
        案例“ www.facebook.com”:
            window_size =“ width = 585,height = 368”;
            打破;
        案例“ www.twitter.com”:
            window_size =“ width = 585,height = 261”;
            打破;
        案例“ plus.google.com”:
            window_size =“ width = 517,height = 511”;
            打破;
    }
    window.open(url,``,'menubar = no,toolbar = no,resizable = yes,scrollbars = yes,'+ window_size);
    返回false;
});

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


不错的解决方案!另外,我使用一些JavaScript来填写当前页面的网址:$(".share-popup").each(function(){ var href = $( this ).attr( "href" ); href = href.replace( "URL_HERE", document.URL ); $( this ).attr( "href", href ); });
GavinoGrifoni 2015年

@GavinoGrifoni最好包含当前的URL服务器端以支持非JavaScript用户
rybo111

12

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

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

7

您可以使用Feed URL“直接URL”选项,如Feed对话框页面中所述:

您还可以通过将用户显式定向到/ 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中的概念所取代。


2
但是如果不注册App ID就无法访问该对话框吗?
伊莱(Eli)

7

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

新的 dialog API可以获取参数,并且无需任何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标签,则可能无法获得所需的结果。


感谢您发布此答案。但是,我得到的错误是Can't Load URL: The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and subdomains of your app to the App Domains field in your app settings.我在本地主机上。有任何想法吗?我试图在FB 的BasicAdvanced设置中都包含多个域,但是没有运气。
padawanTony

看起来好像display=popup不是在桌面上工作。
Nicke Manarin

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。


redirect_uri不再需要。


3

1
(使用iframe版本)
DMCS 2012年

这不是我真正想要的。我只想使用锚元素。
Web_Designer 2012年

抱歉,那么您不走运。它是Javascript或iFramed。
DMCS '02

3
我是说,如果用户禁用了JavaScript,那么他们将无法在Facebook上共享页面。我只是想知道是否有类似twitter.com/share的链接,但有facebook 链接。
Web_Designer 2012年

1
@Flimm请参阅developers.facebook.com/bugs/252983554810810并阅读Noorin的评论。{quote} Noorin Ladhani·Facebook团队您好Ronald-不赞成使用“共享”按钮,而喜欢“喜欢”按钮。{quote}
DMCS 2016年


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间谍软件的情况下,节省了一次点击的时间:)


有什么办法可以在新标签页中打开它。现在它的pening一个弹出
阿劳丁艾哈迈德

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" %>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.