2012-02-02 17 views

risposta

131

Potreste usare

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

Attualmente non esiste alcuna opzione di condivisione senza passare URL corrente come parametro. È possibile utilizzare un modo indiretto per raggiungere questo obiettivo.

  1. creare una pagina lato server, ad esempio: "/sharer.aspx"
  2. link di questa pagina ogni volta che si desidera che la funzionalità di condivisione.
  3. del manuale "sharer.aspx" ottenere l'url riferendosi, e reindirizzare a "https://www.facebook.com/sharer/sharer.php?u= {} referer"

Esempio ASP .Net codice:

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

Questa è la risposta giusta. –

+0

sì questa è una buona opzione. Ma se voglio che questo si apra in un pop-up come nella versione js, cosa dovrei fare? In questo momento si sta aprendo in una nuova scheda! Grazie! –

+0

Questo non è quello che stavo chiedendo. Ciò richiede che tu conosca l'URL della pagina condivisa, in modo da poter sostituire "#url" nel tuo 'href' con l'URL della pagina. Utilizzando il link http://twitter.com/share, tuttavia, non è necessario inserire l'URL della pagina condivisa. –

2
+0

Questi tutti richiedono javascript, giusto? –

+1

(usa la versione iframe) – DMCS

+0

Questo non è proprio quello che sto cercando. Voglio solo usare un elemento di ancoraggio. –

7

È possibile utilizzare l'opzione di alimentazione URL "URL diretto", come descritto nella pagina Feed Dialog:

È anche possibile aprire un feed di dialogo dirigendo in modo esplicito l'utente al/finestra/endpoint di alimentazione:

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` 

Sembra accennano più "condivisione" ovunque nei loro documenti; questo è stato sostituito con il concetto di aggiungere al tuo feed.

+1

Ma non è possibile accedere a quella finestra di dialogo senza registrare un ID app? – Eli

102

Ps 2: Come sottolineato da Justin, controllare Facebook's new Share Dialog. Lascia la risposta come è per i posteri.Questa risposta è obsoleto


Risposta breve, sì, c'è una simile opzione per Facebook, che non necessita di javascript (beh, c'è qualche minima linea JS che non è obbligatorio, vedi nota).

Ps: La parte onclick aiuta solo di personalizzare il pop-up un po 'ma è non è necessaria per il codice a lavorare ... che funzionerà bene anche senza di esso.

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> 

GooglePlus

<a href="https://plus.google.com/share?url=URLENCODED_URL" 
    onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=350,width=480');return false;" 
    target="_blank" title="Share on Google+"> 
</a> 
+2

Questa soluzione richiede chiaramente JavaScript. – superluminary

+0

@superluminary ... ha ma non lo richiede. Avevo detto che puoi rimuoverlo (la parte onclick) ... e funzionerà ancora. Ma posso vedere come tutto ciò non è al 100% chiaro ... lo modificherò. –

+1

Bel esempio di degradazione elegante! –

29

È possibile includere JavaScript nel codice e continuare a supportare utenti non JavaScript.

Se un utente fa clic uno dei seguenti collegamenti, senza che Javascript sia abilitato, sarà sufficiente aprire una nuova scheda:

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

Perché contengono la classe share-popup, si può facilmente fare riferimento questi in jQuery, e cambiare il la dimensione della finestra per soddisfare il dominio stiamo condividendo da:

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

Non più brutto in linea JavaScript, o innumerevoli alterazioni finestra di ridimensionamento. E supporta ancora utenti non JavaScript.

+0

Bella soluzione! Inoltre, sto usando qualche javascript per riempire l'URL della pagina corrente: '$ (". Share-popup ") each (function() { \t \t var href = $ (this) .attr (" href ") ; \t \t href = href.replace ("URL_HERE", document.URL); \t \t $ (this) .attr ("href", href); \t}); ' – GavinoGrifoni

+0

@GavinoGrifoni è meglio includere la URL corrente lato server per supportare utenti non JavaScript – rybo111

2

Per coloro che desiderano utilizzare javascript, ma non vogliono utilizzare il Facebook libreria 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> 

funziona anche se JavaScript è disabilitato, ma ti dà una finestra pop-up con una quota di anteprima se javascript è abilitato.

salva un'aghi cliccare pur non utilizzando qualsiasi Facebook js spyware :)

1

Aggiungendo a @ di rybo111 soluzione, ecco cosa una quota di LinkedIn potrebbe essere:

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

e aggiungere questo alla tua Javascript:

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

Come per la documentazione di LinkedIn: https://developer.linkedin.com/documents/share-linkedin

Per chiunque sia interessato, ho usato questo in un'applicazione Rails con un logo LinkedIn, ecco il mio codice, se potrebbe essere utile:

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

Un sacco di queste risposte non si applicano più, quindi ecco la mia:

Utilizzare la finestra di dialogo Condividi descritta allo Facebook Dev Page.

Esempio:

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 

Ma devi mettere nel vostro APP_ID registrato, il href, e un URI reindirizzamento.

+0

'redirect_uri' non è più richiesto. – Mori

Problemi correlati