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, что мне делать? В этот момент он открывается в новой вкладке! Спасибо !
Сагируддин Мондал
Это не то, что я просил. Это требует, чтобы вы знали URL страницы, к которой вы предоставили общий доступ, поэтому вы можете заменить "#url" в вашем hrefURL страницы. Используя ссылку twitter.com/share , вы не должны указывать URL-адрес страницы, которой вы делитесь.
Web_Designer
1
Вы знаете, как отправить изображение?
miguelmpn
@miguelmpn (и новый читатель), посмотрите этот ответ . Короче говоря: og:imageтег.
Mosh Feu
Есть ли документация для этого конкретного метода?
Навед Хан
129

PS 2: Как отметил Джастин , проверьте новый диалог 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>
Кинг'ори Майна
источник
@superluminary ... он есть, но не требует этого. Я упоминал, что вы можете удалить его (часть onclick) ... и он все равно будет работать. Но я вижу, как все это не на 100% ясно ... Я буду редактировать.
Кинг'ори Майна
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 и изменять размер окна в соответствии с доменом, из которого мы делимся:

$ ( "Разделённый всплывающее окно"). Нажмите (функция () {
    var window_size = "ширина = 585, высота = 511";
    var url = this.href;
    var domain = url.split ("/") [2];
    switch (домен) {
        кейс "www.facebook.com":
            window_size = "ширина = 585, высота = 368";
            перерыв;
        дело "www.twitter.com":
            window_size = "ширина = 585, высота = 261";
            перерыв;
        case "plus.google.com":
            window_size = "ширина = 517, высота = 511";
            перерыв;
    }
    window.open (url, '', 'menubar = нет, панель инструментов = нет, изменяемый размер = да, полосы прокрутки = да,' + window_size);
    вернуть ложь;
});

Нет больше уродливого встроенного JavaScript или бесчисленных изменений размеров окна. И он все еще поддерживает не-JavaScript пользователей.

rybo111
источник
Отличное решение! Кроме того, я использую 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, как описано на странице диалога фида:

Вы также можете вызвать диалог Feed, явно указав пользователю конечную точку / dialog / 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`

Похоже, они больше не упоминают «делиться» где-либо в своих документах; это было заменено концепцией добавления в ваш канал.

Джордан Рейтер
источник
2
Но невозможно получить доступ к этому диалоговому окну без регистрации идентификатора приложения?
Илай
7

Я знаю, что это старая ветка, но мне нужно было сделать что-то подобное для проекта, и я хотел поделиться решением 2019 года.

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

Параметры:

  • app_id (Необходимые)
  • href URL-адрес страницы, которой вы хотите поделиться, в случае, если ни один не прошел, будет использовать текущий URL.
  • hashtagдолжен иметь #символ например #amsterdam
  • 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.на локальном хосте. Любые идеи? Я попытался включить несколько доменов в оба Basicи Advancedнастройки на FB , но не повезло.
padawanTony
Не похоже display=popup, работает на рабочем столе.
Никке Манарин
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

http://facebook.com/sharer.php устарела

У вас есть несколько вариантов (используйте версию iframe):

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
источник
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 Привет Рональд - Кнопка «Поделиться» устарела в пользу кнопки «Нравится». {цитата}
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 и получайте удовольствие.

Шандор Тот
источник