Как работает функция «Поделиться ссылкой» на Facebook? - PullRequest
2 голосов
/ 25 января 2009

Я пытаюсь реализовать такую ​​функцию, когда пользователь вводит URL-адрес, а при отображении этого URL-адреса я хочу иметь пользовательское отображение (встроенный объект, если это видео с YouTube, эскиз, если это ссылка на изображение, заголовок и выдержка из тела, если это нормальная ссылка).

Как реализовать такую ​​функцию?

Ответы [ 4 ]

7 голосов
/ 25 января 2009

Существует новая идея под названием oEmbed, которая поддерживает несколько сайтов (Flickr, Vimeo и несколько других), которая решает эту проблему. oEmbed сайт

В противном случае просто проверьте сайт по списку выбранных вами, а затем извлеките соответствующие биты, чтобы создать ссылку для встраивания.

2 голосов
/ 27 января 2009

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

Чтобы эта функция работала, ей необходимо взаимодействие с сервером, и я считаю, что следующий сценарий таков:

Предположим, что у нас есть сайт humanzz.com и что он предоставляет такую ​​функцию

  1. Пользователь вводит URL на веб-странице humanzz.com и нажимает кнопку, например кнопку предварительного просмотра Facebook
  2. AJAX-вызов сделан на выделенную страницу на humanzz.com
  3. humanzz.com вызывает удаленный веб-сайт и получает его данные
  4. Вызов AJAX теперь возвращает данные страницы (объект JSON oEmbed)

Это связано с огромными накладными расходами сервера.

Я действительно хотел сделать это, используя JavaScript, поскольку роль сервера состояла только в том, чтобы обойти ограничения "Same Origin Policy".

oohEmbed позволяет обойти шаг сервера, указав параметр обратного вызова для oohEmbed, чтобы возвращаемый объект JSON передавался функции обратного вызова на вашей странице. Пример, иллюстрирующий это, выглядит следующим образом

Добавление тега скрипта динамически на вашу страницу

&callback=myCallBack">

Это приведет к выполнению myCallback (oEmbedJSONObject), что отлично.

Проблема с этим решением заключается в том, что вам все еще нужно иметь запасной вариант для сайтов, которые не имеют представлений oEmbed.

1 голос
/ 29 мая 2012

Для встроенных вещей я с большим успехом использую auto_html (https://github.com/dejan/auto_html) (vimeo, youtube, images) и даже сам добавляю soundcloud. Но я все еще ищу генерацию «миниатюр» с изображением и текст в стиле Facebook.

0 голосов
/ 25 января 2009

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

Если это ссылка на какое-то видео на YouTube, то вам нужно посмотреть, как работает встраивание видео на Youtube. Вы можете просто скопировать код, предоставленный самим Youtube, а затем обменять детали URL-адресом видео на URL-адрес, полученный от пользователя.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...