Facebook посилання без JavaScript


137

Наступне посилання призначене для обміну сторінкою у Twitter:

http://twitter.com/share

Чи є подібний варіант для Facebook, який не вимагає JavaScript?

Я знаю про http://facebook.com/sharer.php , але для цього потрібно встановити параметр get вручну (що я не збираюся робити) або за допомогою JavaScript (що не відповідає моїй ситуації).

Відповіді:


190

Ви можете використовувати

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

так, це приємний варіант. Але якщо я хочу, щоб це відкрилося у спливаючому вікні, як версія js, що мені робити? На даний момент він відкривається в новій вкладці! Дякую !
Mogir Sagiruddin

Це не те, про що я просив. Це вимагає, щоб ви знали URL-адресу сторінки, якою поділитесь, тож ви можете замінити "#url" у своїй hrefURL-адресою сторінки. Використовуючи посилання twitter.com/share , однак, не потрібно вставляти URL-адресу сторінки, якою ви ділитесь.
Web_Designer

1
Ви знаєте, як надіслати зображення?
miguelmpn

@miguelmpn (і новіший читач), дивіться цю відповідь . Якщо коротко: og:imageтег.
Мош Феу

Чи є документація для цього конкретного методу?
Naved Khan

129

Пс 2: Як наголосив Джастін , перегляньте новий діалог Share Facebook у Facebook . Відповідь залишимо так, як для нащадків. Ця відповідь застаріла


Коротка відповідь, так, є аналогічний варіант для Facebook, який не вимагає JavaScript (ну, є мінімальний вбудований JS, який не є обов'язковим, див. Примітку).

Пс: 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>

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>

@superluminary ... він має, але цього не вимагає. Я вже згадував, що ви можете видалити його (частина onclick) ... і вона все одно спрацює. Але я бачу, як це все не на 100% зрозуміло ... Я це відредагую.
King'ori Maina

2
Гарний приклад витонченої деградації!
Арнольд Даніельс

6
+1. Слід змінити http://www.facebook.com/sharer.phpнаhttp://www.facebook.com/sharer/sharer.php
Нір Леві

1
Я б оновив цю відповідь, щоб вказати людям використовувати діалог обміну, як вказує Facebook.
Джастін Скілз

Що таке TWITTER_HANDLEпараметр?
hamidfzm

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 = "ширина = 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 = ні, панель інструментів = ні, зміна розміру = так, панелі прокрутки = так,' + window_size);
    повернути помилкове;
});

Немає більше потворних вбудованих JavaScript або незліченних змін розмірів вікон. І він все ще підтримує користувачів, що не мають JavaScript.


Приємне рішення! Також я використовую javascript для заповнення URL-адреси поточної сторінки:$(".share-popup").each(function(){ var href = $( this ).attr( "href" ); href = href.replace( "URL_HERE", document.URL ); $( this ).attr( "href", href ); });
GavinoGrifoni

@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

Ви можете скористатися параметром URL-адреси каналу "Пряма URL-адреса", як описано на сторінці діалогу каналу :

Ви також можете відкрити діалог подачі, прямо вказавши користувача до / діалогу / кінцевої точки каналу:

  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`

Схоже, вони більше не згадують про "спільний доступ" ніде в своїх документах; це було замінено концепцією додавання до вашого каналу.


2
Але неможливо отримати доступ до цього діалогу без реєстрації ідентифікатора програми?
Елі

7

Я знаю, що це стара нитка, але мені довелося зробити щось подібне для проекту, і я хотів поділитися рішенням на 2019 рік.

Новий dialogAPI може отримати парами і використовувати його без будь-якого JavaScript.

Парами:

  • app_id (Вимагається)
  • href URL-адреса сторінки, яку ви хочете поділитися, якщо жодна з них не пройшла, використовуватиме поточну URL-адресу.
  • hashtagповинні мати #символ, наприклад # амстердам
  • quote текст для спільного використання за посиланням

Ви можете створити href без будь-якого JavaScript, що раніше.

<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.я перебуваю на localhost. Будь-які ідеї? Я спробував включити декілька доменів як у, так Basicі в Advancedналаштуваннях на FB, але не пощастило.
padawanTony

Не схоже display=popup, що працює на робочому столі.
Нік Манарін

6

Багато цих відповідей більше не застосовується, тому ось моя:

Скористайтеся діалогом обміну, описаним на сторінці Dev 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

Це насправді не те, що я шукаю. Я просто хочу використовувати якірний елемент.
Web_Designer

Вибачте, тоді вам не пощастило. Це або Javascript, або iFramed.
DMCS

3
Я кажу, що якщо у користувача відключений JavaScript, він не зможе поділитися сторінкою у Facebook. Мені було просто цікаво, чи є подібне посилання, як twitter.com/share, але для facebook.
Web_Designer

1
@Flimm Перегляньте developers.facebook.com/bugs/252983554810810 та прочитайте коментар від Noorin. {quote} Noorin Ladhani · · Команда Facebook Привіт Рональд - Кнопка "Share" застаріла на користь кнопки "Like". {quote}
DMCS


2

Для тих, хто хоче використовувати javascript, але не хоче використовувати бібліотеку javascript у Facebook:

<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


Чи є спосіб відкрити його в новій вкладці. Прямо зараз його загородження
Аладдін Ахмед

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 (див. Розділ "Індивідуальна URL-адреса")

Для всіх, хто цікавиться, я використовував це в додатку Rails з логотипом LinkedIn, тож ось мій код, якщо це може допомогти:

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

1

Як ділитися вмістом: https://developers.facebook.com/docs/share/

Ви повинні вибрати використання застарілої функції без JS, і перевіряти кожен день, або слідувати способом використання JS та отримувати задоволення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.