jQuery внешний RSS-анализатор? - PullRequest
3 голосов
/ 24 января 2010

Я искал приличный jQuery feed / XML parser и нашел хорошие плагины, такие как jFeed и jParse (среди нескольких других). Однако ни один из этих способов не поддерживает извлечение внешнего канала, что мне и нужно.

Уверен, что это связано с методом $ .ajax () jQuery, а не с самими плагинами (как они будут построены из этого).

Есть ли какой-нибудь хак, который я мог бы использовать, чтобы переопределить jQuery, или необработанную альтернативу JavaScript? Лучше все равно будет лучше плагин, но даже более популярные, которые я нашел, не поддерживают его.

Спасибо

Ответы [ 6 ]

4 голосов
/ 24 января 2010

попробуйте этот учебник:

http://visualrinse.com/2008/09/24/how-to-build-a-simple-rss-reader-with-jquery/ (archive.org)

и демо

http://visualrinse.com/bradley/mm491/reader.html (archive.org)

2 голосов
/ 19 января 2012

Я недавно построил AMJR (Asynchronous Multifeed JS Reader), потому что я не мог найти что-то похожее на то, что вы спрашиваете ...

AMJR был написан для удовлетворения конкретной потребности: многоканальный ридер, написанный на JS. Другими словами, считыватель каналов, который принимает несколько каналов в качестве входных данных и выводит последний X из всех каналов в хронологическом порядке. Реализация, которую вы наверняка найдете в серверных языках, но не в JS! Наличие такой функциональности в браузере пользователя (на стороне клиента) может снять некоторую нагрузку на обработку, особенно на сайтах с большим трафиком, которые могут интегрировать внешние каналы. Думайте об AMJR как о своем собственном виджете "Yahoo Pipes", чтобы объединять фиды в одном и том же блоке вывода.

Подводя итог для AMJR:

  • Он может получать несколько каналов одновременно, одновременно сортируя их в хронологическом порядке.
  • Он прост в реализации, мал по размеру и быстро загружается.
  • Это неблокирующее (асинхронное). Это означает, что браузер продолжит загружать оставшуюся часть страницы во время загрузки каналов.
  • Он может обрабатывать небольшую загрузку каналов, но результирующая производительность зависит от скорости загрузки интернет-соединения вашего пользователя. В этом примере я специально выбрал для извлечения смешное количество внешних каналов (более 150), чтобы вы могли видеть а) процесс неблокирования и б) насколько он быстр.
  • Ленты «проксируются» через инфраструктуру Google (или, возможно, через YQL Yahoo), где они «нормализуются» и затем преобразуются в (сжатый) JSON перед отправкой обратно в браузер пользователя.
  • Построен на jQuery, но зависимость настолько мала, что вы можете легко адаптировать его для работы с Mootools, YUI и т. Д.
  • Работает во всех современных браузерах.

Информация / скачать по адресу: http://nuevvo.com/labs/amjr/

Наслаждайтесь!

1 голос
/ 27 января 2010

Ответ выглядит на этой странице, используя YQL вместо моего собственного PHP-прокси для обработки запросов.

http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

Обнаружив, что невозможно выполнить простой вызов JavaScript для обработки этих запросов, этот плагин jQuery выглядит идеально, и попробую его позже.

Фактически, для разбора RSS-каналов без jQuery вы можете использовать Google AJAX Feed API. Работает угощение.

http://code.google.com/apis/ajaxfeeds/examples.html

Спасибо за ответы

0 голосов
/ 26 сентября 2011

Я могу только рекомендовать jFeed. Я использую его форк (https://github.com/uhlenbrock/jfeed) вместе с моим проектом phonegap. В форк добавлена ​​поддержка парсинга тега creator, и он отлично работает из коробки.

0 голосов
/ 30 января 2010

jFeed имеет PHP-прокси. Я просто нуждался в этом, и jFeed смог получить внешнее. Пожалуйста, отредактируйте свой комментарий, если НЕ используется php.

ОТВЕТ (Из того, что мы знаем): Используйте jFeed!

:: Однако я только что узнал, что ваш канал «не правильно сформирован», он сломает jFeed. :: Будьте предупреждены

0 голосов
/ 24 января 2010

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

Вам понадобится какой-нибудь прокси на стороне сервера, например, скрипт PHP или python (или любой другой язык, который вы предпочитаете), который запрашивает внешние каналы и возвращает их содержимое в ваше приложение.

В проверенном плагине jFeed есть пример прокси-сервера PHP.

...