Facebook-Link ohne JavaScript teilen

Antworten:

190

Du könntest benutzen

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

Derzeit gibt es keine Freigabeoption, ohne die aktuelle URL als Parameter zu übergeben. Sie können einen indirekten Weg verwenden, um dies zu erreichen.

  1. Erstellen Sie eine serverseitige Seite, zum Beispiel: "/sharer.aspx"
  2. Verknüpfen Sie diese Seite, wann immer Sie die Freigabefunktionalität wünschen.
  3. Rufen Sie in der Datei "sharer.aspx" die verweisende URL ab und leiten Sie den Benutzer zu " https://www.facebook.com/sharer/sharer.php?u= {referer}" weiter.

Beispiel für einen ASP .Net-Code:

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();
    }
}
Medeni Baykal
quelle
Ja, das ist eine schöne Option. Aber wenn ich möchte, dass dies in einem Popup wie der js-Version geöffnet wird, was soll ich tun? In diesem Moment wird es in einem neuen Tab geöffnet! Vielen Dank !
Sagiruddin Mondal
Darum habe ich nicht gebeten. Dazu müssen Sie die URL der freigegebenen Seite kennen, damit Sie "#url" in Ihrer hrefdurch die URL der Seite ersetzen können . Bei Verwendung des Links twitter.com/share müssen Sie jedoch nicht die URL der Seite eingeben, die Sie freigeben.
Web_Designer
1
Wissen Sie, wie man ein Bild sendet?
Miguelmpn
@miguelmpn (und der neuere Leser), siehe diese Antwort . Kurzum: og:imageTag.
Mosh Feu
Gibt es Dokumentation für diese bestimmte Methode?
Naved Khan
129

Ps 2: Wie von Justin hervorgehoben , sehen Sie sich den neuen Share-Dialog von Facebook an . Wird die Antwort so lassen, wie sie für die Nachwelt ist. Diese Antwort ist veraltet


Kurze Antwort: Ja, es gibt eine ähnliche Option für Facebook, für die kein Javascript erforderlich ist (es gibt einige minimale Inline-JS, die nicht obligatorisch sind, siehe Hinweis).

Ps: Der onclickTeil hilft Ihnen nur dabei, das Popup ein wenig anzupassen, ist aber nicht erforderlich, damit der Code funktioniert. Ohne ihn funktioniert er einwandfrei.

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>

Twitter

<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>
King'ori Maina
quelle
@superluminary ... es hat es aber nicht benötigt. Ich hatte erwähnt, dass Sie es entfernen können (der Onclick-Teil) ... und es wird immer noch funktionieren. Aber ich kann sehen, dass alles nicht 100% klar ist ... Ich werde es bearbeiten.
King'ori Maina
2
Schönes Beispiel für anmutige Erniedrigung!
Arnold Daniels
6
+1. Sollte sich ändern http://www.facebook.com/sharer.phpzuhttp://www.facebook.com/sharer/sharer.php
Nir Levy
1
Ich würde diese Antwort aktualisieren, um die Leute darauf hinzuweisen, den Freigabedialog gemäß den Anweisungen von Facebook zu verwenden.
Justin Skiles
Was ist ein TWITTER_HANDLEParameter?
Hamidfzm
38

Es ist möglich, JavaScript in Ihren Code aufzunehmen und weiterhin Nicht-JavaScript-Benutzer zu unterstützen.

Wenn ein Benutzer auf einen der folgenden Links klickt, ohne dass JavaScript aktiviert ist, wird einfach ein neuer Tab geöffnet:

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

Da sie die share-popupKlasse enthalten , können wir diese in jQuery leicht referenzieren und die Fenstergröße an die Domäne anpassen, von der aus wir sie freigeben:

$ (". share-popup"). click (function () {
    var window_size = "width = 585, height = 511";
    var url = this.href;
    var domain = url.split ("/") [2];
    switch (domain) {
        Fall "www.facebook.com":
            window_size = "width = 585, height = 368";
            brechen;
        Fall "www.twitter.com":
            window_size = "width = 585, height = 261";
            brechen;
        Fall "plus.google.com":
            window_size = "width = 517, height = 511";
            brechen;
    }}
    window.open (url, '', 'menubar = no, toolbar = no, resizable = yes, scrollbars = yes,' + window_size);
    falsch zurückgeben;
});

Kein hässliches Inline-JavaScript oder unzählige Änderungen der Fenstergröße mehr. Und es unterstützt weiterhin Nicht-JavaScript-Benutzer.

rybo111
quelle
Schöne Lösung! Außerdem verwende ich Javascript, um die aktuelle Seiten-URL auszufüllen:$(".share-popup").each(function(){ var href = $( this ).attr( "href" ); href = href.replace( "URL_HERE", document.URL ); $( this ).attr( "href", href ); });
GavinoGrifoni
@ GavinoGrifoni Es ist besser, die aktuelle URL serverseitig
einzuschließen
12

Versuchen Sie diese Link-Typen funktioniert tatsächlich für mich.

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
Asitha Yomal
quelle
7

Sie können die Option "Direkte URL" der Feed-URL verwenden, wie auf der Seite " Feed-Dialog " beschrieben :

Sie können auch einen Feed-Dialog aufrufen, indem Sie den Benutzer explizit zum Endpunkt / dialog / feed weiterleiten:

  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`

Sieht so aus, als würden sie in ihren Dokumenten nirgendwo mehr "Teilen" erwähnen. Dies wurde durch das Konzept des Hinzufügens zu Ihrem Feed ersetzt.

Jordan Reiter
quelle
2
Ist es jedoch nicht möglich, auf diesen Dialog zuzugreifen, ohne eine App-ID zu registrieren?
Eli
7

Ich weiß, dass es ein alter Thread ist, aber ich musste so etwas für ein Projekt tun und wollte die Lösung für 2019 teilen.

Die neue dialogAPI kann Parameter abrufen und ohne Javascript verwendet werden.

Die Parameter sind:

  • app_id (Erforderlich)
  • href Die URL der Seite, die Sie freigeben möchten, verwendet die aktuelle URL, falls keine übergeben wurde.
  • hashtagmuss das #Symbol zum Beispiel #amsterdam haben
  • quote Text, der mit dem Link geteilt werden soll

Sie können eine href ohne Javascript erstellen.

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

Eine zu berücksichtigende Sache ist, dass Facebook Open Graph verwendet. Wenn Ihre OG-Tags nicht richtig eingestellt sind, erhalten Sie möglicherweise nicht die gewünschten Ergebnisse.

Shahar
quelle
Vielen Dank für die Veröffentlichung dieser Antwort. Ich erhalte jedoch den Fehler, dass 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.ich auf localhost bin. Irgendwelche Ideen? Ich habe versucht , mehrere Domänen in sowohl die aufzunehmen Basicund AdvancedEinstellungen auf FB aber kein Glück.
PadawanTony
Sieht nicht so aus, display=popupals würde auf dem Desktop gearbeitet.
Nicke Manarin
6

Viele dieser Antworten gelten nicht mehr. Hier ist meine:

Verwenden Sie den auf der Facebook-Entwicklerseite beschriebenen Freigabedialog .

Beispiel:

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

Sie müssen jedoch Ihre registrierte app_id, die href und eine Weiterleitungs-URL eingeben.

Justin Skiles
quelle
redirect_uriwird nicht mehr benötigt.
Mori
3

http://facebook.com/sharer.php ist veraltet

Sie haben einige Optionen (verwenden Sie die Iframe-Version):

http://developers.facebook.com/docs/reference/plugins/like/

http://developers.facebook.com/docs/reference/plugins/send/

https://developers.facebook.com/docs/reference/plugins/like-box/

DMCS
quelle
1
(Verwenden Sie die Iframe-Version)
DMCS
Das ist nicht wirklich das, wonach ich suche. Ich möchte nur ein Ankerelement verwenden.
Web_Designer
Entschuldigung, dann hast du kein Glück. Es ist entweder Javascript oder iFramed.
DMCS
3
Ich sage, wenn der Benutzer JavaScript deaktiviert hat, kann er die Seite nicht auf Facebook teilen. Ich habe mich nur gefragt, ob es einen ähnlichen Link wie twitter.com/share gibt, aber für Facebook.
Web_Designer
1
@Flimm Bitte lesen Sie developer.facebook.com/bugs/252983554810810 und lesen Sie den Kommentar von Noorin. {quote} Noorin Ladhani · · Facebook-Team Hallo Ronald - Der Share-Button wurde zugunsten des Like-Buttons abgelehnt. {quote}
DMCS
2

Für diejenigen, die Javascript verwenden möchten, aber nicht die Facebook-Javascript-Bibliothek verwenden möchten:

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

Funktioniert auch, wenn Javascript deaktiviert ist, bietet jedoch ein Popup-Fenster mit Freigabe-Vorschau, wenn Javascript aktiviert ist.

Spart einen Nadelklick, wenn keine Facebook-Spyware verwendet wird :)

Marek Andreansky
quelle
Gibt es eine Möglichkeit, es in einem neuen Tab zu öffnen? Im Moment ist es ein Popup
Alauddin Ahmed
2

Als Ergänzung zur Lösung von @ rybo111 wäre dies eine LinkedIn-Freigabe:

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

und fügen Sie dies Ihrem Javascript hinzu:

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

Gemäß der LinkedIn-Dokumentation: https://developer.linkedin.com/docs/share-on-linkedin (siehe Abschnitt "Benutzerdefinierte URL")

Für alle, die interessiert sind, habe ich dies in einer Rails-App mit einem LinkedIn-Logo verwendet. Hier ist mein Code, wenn es helfen könnte:

<%= 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" %>
Kyle Carlson
quelle