Phonegap RSS订阅,Javascript

3

我需要编写一个使用HTML5和JS的PhoneGap应用程序(不需要与IE兼容),通过AJAX从RSS源中读取特定信息。我的问题是我不知道最好的处理RSS源的方式,而且jQuery无法处理XML。您有什么建议吗?

5个回答

5

这个选项不能通过PhoneGap作为应用程序工作,对吧?主要是因为这是一个Web应用程序,所以可以运行PHP。 - jimbo
它透過PhoneGap運作正常。使用PHP也沒有問題。 - Jivings
我其实不知道,我远离iPhone开发。但是在那个教程中使用PHP应该很容易在简单的JavaScript中实现。 - Jivings
如果有人能用JavaScript做到这一点,那就太好了,因为这正是我所需要的... - jimbo
1
比起一年前,现在PHP实际上并不需要在iPhone上运行,它运行在一个独立的Web服务器上,而iPhone则与该服务器进行通信。 - Dhaivat Pandya

4

我刚刚制作了一个使用jFeed解析外部RSS源的PhoneGap应用程序。以下是一个示例:

首先,在我的index.html文件中包含以下JavaScript代码:

<head>
    ...
    <script type="text/javascript" src="phonegap-1.0.0.js"></script>
    <script type="text/javascript" src="jquery/jquery-1.6.4.js"></script>
    <script type="text/javascript" src="jquery.mobile/jquery.mobile-1.0b3.min.js"></script>
    <script type="text/javascript" src="jquery.jfeed/dist/jquery.jfeed.js"></script>
    <script type="text/javascript" src="scripts/my.js"></script>
    ...
</head>

然后,在my.js文件中,我使用以下代码:
parseFeed();

function parseFeed() {
$.getFeed({
    url: 'http://someUrl.com',
    dataType: "xml",
    success: function(feed) {

    $('#feedresult').empty();

    var html = '<ul data-role="listview">';

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

        var item = feed.items[i];

        html += '<li>'
        + '<a href="#article?id='
        + i
        + '">'
        + item.title
        + '</a>'
        + '</li>';
    }

    html = html + '</ul>';

    $('#feedresult').append(html);
    $('#main').page('destroy').page();

    }});
};

代码然后在我的 #feedresult div 中创建了一个列表视图(jQuery mobile),其中每个条目代表一个 feed 项。由于 phonegap 利用某种 Web 视图使用 file:/// 协议加载所有内容,因此从 phonegap 进行跨域 XMLHttpRequest 没有问题。详见:http://groups.google.com/group/phonegap/browse_thread/thread/b60bda03bac6e9eb

2

这个问题虽然有些老,但仍可能有帮助,可以在2014年解决。

我测试了很多jQuery插件来包含RSS阅读器,但唯一能够在1分钟内完美工作的是zrssfeed

只需要在头部添加调用(在调用jquery和jquery mobile之后):

<script type="text/javascript" src="jquery.zrssfeed.min.js"></script>

在这之后,可以这样开始调用jQuery:

<script type="text/javascript">
    $(document).ready(function () {
        $('#feedresult').rssfeed('http://my.wordpress.website.com/feed/', {
            limit: 5
        });
    });
</script>

我希望这可以帮到您, Mike

我用过的最简单的jQuery Feed解析器。 - jasonflaherty

1

你的意思是jQuery不能处理XML吗?jQuery是JavaScript,而在进行Ajax调用时,jQuery使用XMLHttpRequest。看看名称中的XML*。参见:http://api.jquery.com/jQuery.ajax/。有一个dataType参数。你可以将其设置为xml。然后,你将获得带有所有DOM对象方法的DOM对象。

你甚至可以将它作为jQuery选择器的第二个参数使用:

jQuery.get(url, {}, function (data) {
    var entries = $("entry", data);
    doSomething(entries);
}, 'xml');

Jquery在"解析"HTML方面做得很糟糕,它只是简单地修改了标签的.innerHTML。 - Dhaivat Pandya
首先,我并不是有意冒犯,但是“不好”是什么意思呢?当然,这可能有点取巧,但它是否慢呢?因为当我使用某些库时,唯一关心的是API和速度。我没有基准或其他东西来证明jQuery方法很快。这只是一般的好奇心。 - petraszd
这很糟糕,因为它将XML解释为HTML,这非常危险,因为并非所有有效的XML都是有效的HTML。 - Dhaivat Pandya

0

我有点害怕使用没有任何开发活动的东西。 - Dhaivat Pandya
这绝对值得一试,而且由于它是开源的,你总是可以修复任何问题。 - sparkymat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接