Анализируйте RSS с помощью jQuery

Я хочу использовать jQuery для анализа RSS-каналов. Можно ли это сделать с помощью базовой библиотеки jQuery из коробки или мне нужно будет использовать плагин?


person Andy Brudtkuhl    schedule 22.10.2008    source источник
comment
Я бы выбрал github.com/sdepold/jquery-rss - сейчас это лучший вариант , доступно несколько вариантов! :)   -  person Komrath    schedule 13.02.2012
comment
Для всех, кто попал сюда из Google, мне пришлось создать аналогичную вещь для программы просмотра эскизов на сайте deviantART. Красиво, просто и легко расширяется: adamjamesnaylor.com / 2012/11/05 /. Обратите внимание, что он использует программу чтения каналов Google, но только для преобразования ее в JSON.   -  person Adam Naylor    schedule 06.11.2012
comment
github.com/sdepold/jquery-rss   -  person Blazemonger    schedule 06.05.2015


Ответы (19)


ВНИМАНИЕ

Google Feed API официально устарел и не поддерживает больше работать!


Нет необходимости в плагине целиком. Это вернет ваш RSS как объект JSON в функцию обратного вызова:

function parseRSS(url, callback) {
  $.ajax({
    url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url),
    dataType: 'json',
    success: function(data) {
      callback(data.responseData.feed);
    }
  });
}
person Andrew Childs    schedule 07.06.2011
comment
Пробовал jFeed, и это не сработало, это отлично работает и не требует дополнительной библиотеки. - person diggersworld; 06.08.2011
comment
Меня интересует отсутствующий ключ API, который Google запрашивает во всех своих запросах. - person Xeoncross; 07.08.2011
comment
имейте в виду ... используя API Google, каналы кэшируются, поэтому вы не будете получать самые последние и самые лучшие каналы. - person c0deNinja; 21.09.2011
comment
где это кешируется? как я могу удалить кеш? - person Jeg Bagus; 27.09.2011
comment
какое значение должно быть передано в url - person ; 11.07.2012
comment
@JegBagus У меня была такая же проблема, и я опубликовал свое решение ниже - person DigitalDesignDj; 10.05.2013
comment
Это не лучший ответ. Это зависит от сторонней компании [Google], обслуживающей их услуги. Он не отвечает на исходный вопрос (Разобрать RSS с помощью jQuery) и вместо этого рекламирует Google. Что, если Google откажется от своего ajax API или изменит его? Ваш сайт ломается. - person Charles Goodwin; 19.06.2013
comment
Как применить google.feeds.Feed.MIXED_FORMAT к этому примеру кода? - person klewis; 16.08.2013
comment
@CharlesGoodwin, да, это решение зависит от сторонней службы и поэтому не идеально, но если вы попадаете на междоменный URL-адрес, вам понадобится какая-то размещенная служба. Согласно условиям обслуживания Google (developers.google.com/feed/terms) этот API будет доступен до апреля 2015 года. У Yahoo также есть служба (см. github.com/AIRSHP/Feed-To-JSON/blob/master/jquery.feedToJSON.js), а на github есть множество проектов преобразования XML в JSON, если вы хотите разместить свои собственные. - person Andrew Childs; 27.01.2014
comment
Решение зависит от службы, размещенной на стороннем сервере, и поэтому не является идеальным: что ж, пожалуйста, рассматривайте всю всемирную паутину как ориентированную на стороннюю архитектуру. Кстати, если вам нужно получить набор RSS-каналов, упорядоченных по дате элемента, и если вы не боитесь (исторической) третьей стороны: pipe.yahoo.com/pipes - отличное решение для вывода JSON / XML. - person Ronan; 14.05.2014
comment
@CharlesGoodwin Google только что удалил этот API! developers.google.com/feed/?hl=en - person GôTô; 02.12.2015
comment
Если кто-то заинтересован в замене прежнего Google Feed API, вы можете найти его здесь: github. ru / sdepold / feedrapp - person sdepold; 15.10.2019

Используйте jFeed - плагин jQuery RSS / Atom. Согласно документации, это очень просто:

jQuery.getFeed({
   url: 'rss.xml',
   success: function(feed) {
      alert(feed.title);
   }
});
person Nathan Strutz    schedule 22.10.2008
comment
какие-нибудь примеры использования в реальном мире? т.е. синтаксический анализ и отображение, а не оповещение. или это так просто, как $ (# results) .append (feed.title) - person Andy Brudtkuhl; 22.10.2008
comment
ПРИМЕЧАНИЕ: в загрузке есть множество отличных примеров. - person Andy Brudtkuhl; 22.10.2008
comment
хороший ответ, но я не могу скачать этот плагин, как я могу его скачать, потому что формат tar.gz не поддерживается моим WinRAR - person ; 07.11.2009
comment
Анирудха, может, попробуете 7-zip? Он бесплатный, с открытым исходным кодом и открывает файлы различных типов, включая tar / gzip. - person Nathan Strutz; 09.11.2009
comment
Обратите внимание, что последняя версия этого подключаемого модуля доступна на Github. - person Alan H.; 27.05.2011
comment
Похоже, что jFeed больше не поддерживается активно (последнее изменение было сделано 2 года назад, и многие открытые запросы на вытягивание, похоже, игнорируются) и не работает с последними выпусками jQuery. - person Thilo; 05.02.2013
comment
Это на GitHub. Почему бы не разветвить его и не обновить вместо того, чтобы жаловаться на это? Может быть, напишите автору и узнайте, в чем дело. - person Nathan Strutz; 05.02.2013
comment
Пару лет назад я использовал jFeed, и у меня был большой опыт работы с ним. - person siliconrockstar; 12.12.2013

Для тех из нас, кто пришел к обсуждению поздно, начиная с версии 1.5 jQuery имеет встроенные возможности синтаксического анализа XML, что позволяет довольно легко сделать это без плагинов или сторонних сервисов. Он имеет функцию parseXml, а также автоматически анализирует xml при использовании функции $ .get. Например.:

$.get(rssurl, function(data) {
    var $xml = $(data);
    $xml.find("item").each(function() {
        var $this = $(this),
            item = {
                title: $this.find("title").text(),
                link: $this.find("link").text(),
                description: $this.find("description").text(),
                pubDate: $this.find("pubDate").text(),
                author: $this.find("author").text()
        }
        //Do something with item here...
    });
});
person David Hammond    schedule 15.08.2011
comment
Ошибка XmlHttpRequest: источник не разрешен Access-Control-Allow-Origin - person jackocnr; 30.08.2012
comment
@jackocnr, да, это оборотная сторона этого метода. Вы не можете выполнять междоменные запросы, если у вас нет доступа для установки заголовка Access-Control-Allow-Origin на исходном сервере. Если сервер поддерживает jsonp, то это ваш лучший выбор. В противном случае вы можете использовать прокси-скрипт в своем домене для получения xml и затем вызвать этот скрипт вместо внешнего сервера. - person David Hammond; 31.08.2012
comment
Это действительно единственный ответ, который не зависит от внешних плагинов или сервисов? - person Blazemonger; 18.03.2014
comment
Почему $this.find("link").text() всегда возвращает пустую строку ''? - person Jeff Tian; 03.10.2014
comment
@JeffTian, ​​сложно сказать, не увидев ваш xml. Наиболее очевидной причиной может быть то, что элемент ‹link› отсутствует или пуст. - person David Hammond; 03.10.2014
comment
@DavidHammond, спасибо за ответ. Я выяснил причину, по которой возвращенные данные содержат некоторые невидимые пробелы в начале, используя $ .parseXML (data). Итак, я решил проблему, используя $xml = $($.parseXML(data.trim()));, и тогда я смогу получить ссылку, как и ожидалось. - person Jeff Tian; 04.10.2014

jFeed не работает в IE.

Используйте zRSSFeed. Если бы он работал через 5 минут

person Mark Steggles    schedule 12.06.2010
comment
Доступно по адресу zazar.net/developers/zrssfeed. О том, чтобы самому попробовать, чтобы увидеть, как это идет, выглядит многообещающе. - person thewinchester; 18.06.2010
comment
Кстати, zRssFeed внутренне использует Google Feed RSS API. Так что, если кто-то хочет создать сам HTML-макет, проще взглянуть на него напрямую. - person Ciantic; 24.04.2011
comment
супер круто ... единственное, что если бы они предоставляли объекты фида, а не весь html в функции обратного вызова, это было бы здорово ... - person shahil; 01.01.2014
comment
К вашему сведению, любой, кто хочет использовать этот плагин. Разработчик опубликовал следующее. ЭТОТ ПЛАГИН ПРЕКРАЩАЕТСЯ В связи с удалением API Google Feeds из службы, на что ответил плагин, он больше не будет доступен или поддерживаться. Источник: zazar.net/developers/jquery/zrssfeed - person phanf; 02.12.2015

Обновление (15 октября 2019 г.)

Я извлек основную логику из jquery-rss в новую библиотеку под названием Vanilla RSS, которая использует fetch API и может работать без дополнительных зависимостей:

const RSS = require('vanilla-rss');
const rss = new RSS(
    document.querySelector("#your-div"),
    "http://www.recruiter.com/feed/career.xml",
    { 
      // options go here
    }
);
rss.render().then(() => {
  console.log('Everything is loaded and rendered');
});

Оригинал

Почта:

Вы также можете использовать jquery-rss, который поставляется с красивыми шаблонами и очень прост в использовании:

$("#your-div").rss("http://www.recruiter.com/feed/career.xml", {
    limit: 3,
    layoutTemplate: '<ul class="inline">{entries}</ul>',
    entryTemplate: '<li><a href="{url}">[{author}@{date}] {title}</a><br/>{shortBodyPlain}</li>'
})

урожайность (по состоянию на 18 сентября 2013 г.):

<div id="your-div">
    <ul class="inline">
    <entries></entries>
    </ul>
    <ul class="inline">
        <li><a href="http://www.recruiter.com/i/when-to-go-over-a-recruiter%e2%80%99s-head/">[@Tue, 10 Sep 2013 22:23:51 -0700] When to Go Over a Recruiter's Head</a><br>Job seekers tend to have a certain "fear" of recruiters and hiring managers, and I mean fear in the reverence and respect ...</li>
        <li><a href="http://www.recruiter.com/i/the-perfect-job/">[@Tue, 10 Sep 2013 14:52:40 -0700] The Perfect Job</a><br>Having long ago dealt with the "perfect resume" namely God's, in a previous article of mine, it makes sense to consider the ...</li>
        <li><a href="http://www.recruiter.com/i/unemployment-benefits-applications-remain-near-5-year-low-decline-again/">[@Mon, 09 Sep 2013 12:49:17 -0700] Unemployment Benefits Applications Remain Near 5-Year Low, Decline Again</a><br>As reported by the U.S. Department of Labor, the number of workers seeking unemployment benefits continued to sit near ...</li>
    </ul>
</div>

См. http://jsfiddle.net/sdepold/ozq2dn9e/1/ для рабочего примера. .

person sdepold    schedule 26.10.2011
comment
Имейте в виду, что jquery-rss использует API фида Google, который кэширует фид, что может представлять проблему. Вы можете обмануть его, добавив параметр нежелательной ссылки: stackoverflow.com/questions/13401936/ - person kukabuka; 02.05.2015
comment
предоставьте пример форматирования даты без использования moment.js - person Purvesh Desai; 19.11.2015
comment
Проверьте следующий фрагмент gist.github.com/sdepold/d1e5e0e7a66fc77930fe. Он сгенерирует что-то вроде этого: ‹Немного контента›, [@ 2015-11-18] - person sdepold; 20.11.2015
comment
Просто хотел упомянуть, что jquery-rss НЕ использует API Google Feed, а заменяет его под названием Feedr (github. com / sdepold / feedrapp) и, соответственно, отлично работает, несмотря на то, что исходный API отключен. - person sdepold; 15.10.2019

Использование JFeed

function getFeed(sender, uri) {
    jQuery.getFeed({
        url: 'proxy.php?url=' + uri,
        success: function(feed) {
            jQuery(sender).append('<h2>'
            + '<a href="'
            + feed.link
            + '">'
            + feed.title
            + '</a>'
            + '</h2>');

            var html = '';

            for(var i = 0; i < feed.items.length && i < 5; i++) {

                var item = feed.items[i];

                html += '<h3>'
                + '<a href="'
                + item.link
                + '">'
                + item.title
                + '</a>'
                + '</h3>';

                html += '<div class="updated">'
                + item.updated
                + '</div>';

                html += '<div>'
                + item.description
                + '</div>';
            }

            jQuery(sender).append(html);
        }    
    });
}

<div id="getanewbrowser">
  <script type="text/javascript">
    getFeed($("#getanewbrowser"), 'http://feeds.feedburner.com/getanewbrowser')
  </script>
</div>
person Andy Brudtkuhl    schedule 22.10.2008

Используйте Google AJAX Feed API, если ваши данные RSS не являются конфиденциальными. Конечно, быстро.

https://developers.google.com/feed/

person yogman    schedule 22.10.2008
comment
Хорошая идея, но не работает, когда вы находитесь внутри брандмауэра, который требует проверки подлинности прокси-сервера с использованием диалогового окна. - person thewinchester; 18.06.2010
comment
канал Google устарел и больше не поддерживается. - person vikas etagi; 29.12.2017

ОБНОВЛЕНИЕ [25.04.2016] Теперь лучше написанная и полностью поддерживаемая версия с дополнительными опциями и возможностями, размещенными на GitHub.jQRSS

Я видел Выбранный ответ, сделанный Nathan Strutz, однако ссылка на страницу плагина jQuery все еще не работает, и домашняя страница этого сайта не загружается. Я попробовал несколько других решений и обнаружил, что большинство из них не только устарело, но и ЛЕГКО! Таким образом, я бросил шляпу и сделал свой собственный плагин, и с мертвыми ссылками здесь, это похоже на отличное место для отправки ответа. Если вы ищете этот ответ в 2012 году (скоро до b 2013), вы можете заметить разочарование мертвыми ссылками и старыми советами здесь, как это сделал я. Ниже приведена ссылка на мой современный пример плагина, а также код этого плагина! Просто скопируйте код в файл JS и свяжите его в заголовке, как любой другой плагин. Использование ЧРЕЗВЫЧАЙНО EZ!

jsFiddle

Код плагина
09.02.2015 - сделано давно назревшее обновление для проверки console перед отправкой на него команд! Должно помочь с более старыми проблемами IE.

(function($) {
    if (!$.jQRSS) { 
        $.extend({  
            jQRSS: function(rss, options, func) {
                if (arguments.length <= 0) return false;

                var str, obj, fun;
                for (i=0;i<arguments.length;i++) {
                    switch(typeof arguments[i]) {
                        case "string":
                            str = arguments[i];
                            break;
                        case "object":
                            obj = arguments[i];
                            break;
                        case "function":
                            fun = arguments[i];
                            break;
                    }
                }

                if (str == null || str == "") {
                    if (!obj['rss']) return false;
                    if (obj.rss == null || obj.rss == "") return false;
                }

                var o = $.extend(true, {}, $.jQRSS.defaults);

                if (typeof obj == "object") {
                    if ($.jQRSS.methods.getObjLength(obj) > 0) {
                        o = $.extend(true, o, obj);
                    }
                }

                if (str != "" && !o.rss) o.rss = str;
                o.rss = escape(o.rss);

                var gURL = $.jQRSS.props.gURL 
                    + $.jQRSS.props.type 
                    + "?v=" + $.jQRSS.props.ver
                    + "&q=" + o.rss
                    + "&callback=" + $.jQRSS.props.callback;

                var ajaxData = {
                        num: o.count,
                        output: o.output,
                    };

                if (o.historical) ajaxData.scoring = $.jQRSS.props.scoring;
                if (o.userip != null) ajaxData.scoring = o.userip;

                $.ajax({
                    url: gURL,
                    beforeSend: function (jqXHR, settings) { if (window['console']) { console.log(new Array(30).join('-'), "REQUESTING RSS XML", new Array(30).join('-')); console.log({ ajaxData: ajaxData, ajaxRequest: settings.url, jqXHR: jqXHR, settings: settings, options: o }); console.log(new Array(80).join('-')); } },
                    dataType: o.output != "xml" ? "json" : "xml",
                    data: ajaxData,
                    type: "GET",
                    xhrFields: { withCredentials: true },
                    error: function (jqXHR, textStatus, errorThrown) { return new Array("ERROR", { jqXHR: jqXHR, textStatus: textStatus, errorThrown: errorThrown } ); },
                    success: function (data, textStatus, jqXHR) {  
                        var f = data['responseData'] ? data.responseData['feed'] ? data.responseData.feed : null : null,
                            e = data['responseData'] ? data.responseData['feed'] ? data.responseData.feed['entries'] ? data.responseData.feed.entries : null : null : null
                        if (window['console']) {
                            console.log(new Array(30).join('-'), "SUCCESS", new Array(30).join('-'));
                            console.log({ data: data, textStatus: textStatus, jqXHR: jqXHR, feed: f, entries: e });
                            console.log(new Array(70).join('-'));
                        }

                        if (fun) {
                            return fun.call(this, data['responseData'] ? data.responseData['feed'] ? data.responseData.feed : data.responseData : null);
                        }
                        else {
                            return { data: data, textStatus: textStatus, jqXHR: jqXHR, feed: f, entries: e };
                        }
                    }
                });
            }
        });
        $.jQRSS.props = {
            callback: "?",
            gURL: "http://ajax.googleapis.com/ajax/services/feed/",
            scoring: "h",
            type: "load",
            ver: "1.0"
        };
        $.jQRSS.methods = {
            getObjLength: function(obj) {
                if (typeof obj != "object") return -1;
                var objLength = 0;
                $.each(obj, function(k, v) { objLength++; })
                return objLength;
            }
        };
        $.jQRSS.defaults = {
            count: "10", // max 100, -1 defaults 100
            historical: false,
            output: "json", // json, json_xml, xml
            rss: null,  //  url OR search term like "Official Google Blog"
            userip: null
        };
    }
})(jQuery);

ИСПОЛЬЗОВАНИЕ

//  Param ORDER does not matter, however, you must have a link and a callback function
//  link can be passed as "rss" in options
//  $.jQRSS(linkORsearchString, callbackFunction, { options })

$.jQRSS('someUrl.xml', function(feed) { /* do work */ })

$.jQRSS(function(feed) { /* do work */ }, 'someUrl.xml', { count: 20 })

$.jQRSS('someUrl.xml', function(feed) { /* do work */ }, { count: 20 })

$.jQRSS({ count: 20, rss: 'someLink.xml' }, function(feed) { /* do work */ })

$ .jQRSS ('Искать слова здесь вместо ссылки', function (feed) {/ * do work * /}) // TODO: Требуется исправление

Параметры

{
    count: // default is 10; max is 100. Setting to -1 defaults to 100
    historical: // default is false; a value of true instructs the system to return any additional historical entries that it might have in its cache. 
    output: // default is "json"; "json_xml" retuns json object with xmlString / "xml" returns the XML as String
    rss: // simply an alternate place to put news feed link or search terms
    userip: // as this uses Google API, I'll simply insert there comment on this:
        /*  Reference: https://developers.google.com/feed/v1/jsondevguide
            This argument supplies the IP address of the end-user on 
            whose behalf the request is being made. Google is less 
            likely to mistake requests for abuse when they include 
            userip. In choosing to utilize this parameter, please be 
            sure that you're in compliance with any local laws, 
            including any laws relating to disclosure of personal 
            information being sent.
        */
}
person SpYk3HH    schedule 07.12.2012

Я согласен с @Andrew, использование Google - надежный, многоразовый способ сделать это с огромным преимуществом, заключающимся в возвращении JSON. вместо XML. Дополнительным преимуществом использования Google в качестве прокси является то, что службы, которые могут заблокировать ваш прямой доступ к своим данным, вряд ли остановят Google. Вот пример использования отчета о лыжах и данных условий. У него есть все обычные приложения реального мира: 1) Сторонний RSS / XML 2) JSONP 3) Очистка строк и строк в массив, когда вы не можете получить данные именно так, как вы хотите 4) при загрузке добавляйте элементы в ДОМ. Надеюсь, это поможет некоторым людям!

<!-- Load RSS Through Google as JSON using jQuery -->
<script type="text/javascript">

    function displaySkiReport (feedResponse) {

    // Get ski report content strings
    var itemString = feedResponse.entries[0].content;
    var publishedDate = feedResponse.entries[0].publishedDate;

    // Clean up strings manually as needed
    itemString = itemString.replace("Primary: N/A", "Early Season Conditions"); 
    publishedDate = publishedDate.substring(0,17);

    // Parse ski report data from string
    var itemsArray = itemString.split("/");


    //Build Unordered List
    var html = '<h2>' + feedResponse.entries[0].title + '</h2>';
    html += '<ul>';

    html += '<li>Skiing Status: ' + itemsArray[0] + '</li>';
    // Last 48 Hours
    html += '<li>' + itemsArray[1] + '</li>';
    // Snow condition
    html += '<li>' + itemsArray[2] + '</li>';
    // Base depth
    html += '<li>' + itemsArray[3] + '</li>';

    html += '<li>Ski Report Date: ' + publishedDate + '</li>';

    html += '</ul>';

    $('body').append(html);    

    }


    function parseRSS(url, callback) {
      $.ajax({
    url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url),
    dataType: 'json',
    success: function(data) {
      callback(data.responseData.feed);
    }
      });
    }

    $(document).ready(function() {              

        // Ski report
        parseRSS("http://www.onthesnow.com/michigan/boyne-highlands/snow.rss", displaySkiReport);

    });

</script>
person Dylan Valade    schedule 13.09.2011
comment
Это не сработает из-за проблем с несколькими доменами. Вам нужен JSONP. - person gotofritz; 30.08.2012
comment
Меня устраивает. Вы это тестировали? Почти уверен, что Google возвращает jsonp, используя параметр обратного вызова, а не ajax dataType. - person Dylan Valade; 05.09.2012
comment
Не уверен, за что был проголосован против. Этот код все еще работает три года спустя. Вставьте все это в консоль, и вы увидите текущие (XML) условия катания на лыжах, добавленные в нижний колонтитул этой страницы. - person Dylan Valade; 06.05.2016

jFeed несколько устарел и работает только со старыми версиями jQuery. Прошло два года с момента его обновления.

zRSSFeed, возможно, немного менее гибкий, но он прост в использовании и работает с текущей версией jQuery (в настоящее время 1.4). http://www.zazar.net/developers/zrssfeed/

Вот краткий пример из документации zRSSFeed:

<div id="test"><div>

<script type="text/javascript">
$(document).ready(function () {
  $('#test').rssfeed('http://feeds.reuters.com/reuters/oddlyEnoughNews', {
    limit: 5
  });
});
</script>
person Alderete    schedule 10.06.2010
comment
Обратите внимание, что это работает только с нелокальными фидами, поскольку он использует Google Feed API (Google должен иметь возможность загружать фид xml). - person CmdrTallen; 18.03.2011

Я использую jquery с yql для подачи. Вы можете получить twitter, rss, buzz с помощью yql. Я читал с http://tutorialzine.com/2010/02/feed-widget-jquery-css-yql/. Для меня это очень полезно.

person saturngod    schedule 13.04.2010

Я советую вам использовать FeedEk. После того, как Google Feed API официально устарел, большинство плагинов перестали работать. Но FeedEk все еще работает. Он очень прост в использовании и имеет множество опций, которые можно настроить.

$('#divRss').FeedEk({
   FeedUrl:'http://jquery-plugins.net/rss'
});

С опциями

$('#divRss').FeedEk({
  FeedUrl:'http://jquery-plugins.net/rss',
  MaxCount : 5,
  ShowDesc : true,
  ShowPubDate:true,
  DescCharacterLimit:100,
  TitleLinkTarget:'_blank',
  DateFormat: 'MM/DD/YYYY',
  DateFormatLang:'en'
});
person jQP    schedule 11.12.2015
comment
Я не уверен, что вы действительно можете определить альтернативную конечную точку api, но если бы вы могли, потенциально была бы возможность заменить api фида Google на feedrapp: github.com/sdepold/feedrapp (который в настоящее время также является основой jquery-rss) - person sdepold; 15.12.2015
comment
Это не выполняет синтаксический анализ. Он использует yahooapis для синтаксического анализа, а затем просто отображает контент. - person David L.; 03.01.2016

Используйте google ajax api, кэшированный Google, и любой желаемый формат вывода.

Образец кода; http://code.google.com/apis/ajax/playground/#load_feed

<script src="http://www.google.com/jsapi?key=AIzaSyA5m1Nc8ws2BbmPRwKu5gFradvD_hgq6G0" type="text/javascript"></script>
<script type="text/javascript">
/*
*  How to load a feed via the Feeds API.
*/

google.load("feeds", "1");

// Our callback function, for when a feed is loaded.
function feedLoaded(result) {
  if (!result.error) {
    // Grab the container we will put the results into
    var container = document.getElementById("content");
    container.innerHTML = '';

    // Loop through the feeds, putting the titles onto the page.
    // Check out the result object for a list of properties returned in each entry.
    // http://code.google.com/apis/ajaxfeeds/documentation/reference.html#JSON
    for (var i = 0; i < result.feed.entries.length; i++) {
      var entry = result.feed.entries[i];
      var div = document.createElement("div");
      div.appendChild(document.createTextNode(entry.title));
      container.appendChild(div);
    }
  }
}

function OnLoad() {
  // Create a feed instance that will grab Digg's feed.
  var feed = new google.feeds.Feed("http://www.digg.com/rss/index.xml");

  // Calling load sends the request off.  It requires a callback function.
  feed.load(feedLoaded);
}

google.setOnLoadCallback(OnLoad);
</script>
person Daniel Magnusson    schedule 08.10.2012
comment
это отличный вариант, потому что он не полагается на jquery! - person Pete Gardner; 11.11.2013

zRSSfeed построен на jQuery, и простая тема великолепна .
Попробуйте.

person Guruprasad Balaji    schedule 21.09.2011

Проект jQuery-rss довольно легкий и не требует какого-либо особого стиля.

Синтаксис может быть таким простым, как

$("#rss-feeds").rss("http://www.recruiter.com/feed/career.xml")

См. http://jsfiddle.net/jhfrench/AFHfn/.

person Jeromy French    schedule 01.08.2013

jQuery Feeds - хороший вариант, он имеет встроенную систему шаблонов и использует API Google Feed. , поэтому он имеет междоменную поддержку.

person camagu    schedule 13.07.2012

Superfeedr имеет плагин jquery, который очень хорошо с этим справляется. У вас не будет проблем с политикой Cross Origin, и обновления будут распространяться в реальном времени.

person Julien Genestoux    schedule 23.01.2014
comment
Почему бы в этом решении не было проблем с CORS? - person drewish; 01.05.2016

jFeed прост и содержит пример для тестирования. Но если вы анализируете канал с другого сервера, вам необходимо разрешить совместное использование ресурсов между источниками (CORS) на сервере ленты. Вам также необходимо проверить поддержку браузера.

Я загрузил образец, но все еще не получил поддержки со стороны IE ни в одной версии когда я изменил URL-адрес в примере на что-то вроде example.com/feed.rss через протокол http. CORS должен поддерживаться в IE 8 и выше, но в примере jFeed канал не отображался.

Лучше всего использовать API Google:
https://developers.google.com/feed/v1/devguide

См .:
https://github.com/jfhovinne/jFeed
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
http://en.wikipedia.org/wiki/Same_origin_policy
http://caniuse.com/cors.

person Rimian    schedule 11.05.2012

person    schedule
comment
Неплохой ответ, но, к сожалению, вы не очень хорошо справились с вставкой кода. ;-) - person Till; 02.09.2010