我正在尝试获取RSS源并通过apache cordova在移动设备上显示内容。但是,如果我不提供指向.xml文件的URL,则读取器不会加载。例如,
var feedUrl = "https://newsline.com/feed/";
这不会加载,但如果我使用
var feedUrl = "http://feeds.bbci.co.uk/news/technology/rss.xml";
它有效。这是我正在使用的rss reader javascript文件:
/**
* Fetch RSS and display the contents of it
*/
Feed.prototype.load = function() {
var self = this;
$(this.maskEl).show();
$(this.errorEl).text('');
$.ajax({
url: this.url,
dataType: 'text',
crossDomain: true,
success: function(data) {
data = $.parseXML(data.trim());
$(self.listEl).empty();
// Display RSS contents
var $rss = $(data);
$rss.find('item').each(function() {
var item = this;
$(self.listEl).append(self.createListElement(item));
});
},
error: function() {
$(self.errorEl).text('Failed to load RSS.');
},
complete: function() {
$(self.maskEl).hide();
}
});
};
并在index.html页面上:
var feedUrl = "https://newsline.com/feed/";
$(function() {
var feed = new Feed({
url: feedUrl
});
if (monaca.isIOS) {
$('.toolbar').css('margin-top', '20px');
$('.button').css('top', '20px');
}
$('.button').click(function() {
console.log('Reload.');
feed.load();
});
feed.load();
});
任何帮助将不胜感激。我在想它与feed-reader.js中xml的实际解析有关,但我并不完全确定。
谢谢!
更新
我得到了网址按预期工作,但是当我点击Feed上的文章(它不会重新加载RSS Feed)后我尝试返回主页时遇到问题。代码是一样的。 例如,以下是一些截图: Image Screenshots
基本上,Feed会在主页上加载,但是如果单击一个链接并且用户转到该页面然后单击后退箭头(如屏幕截图所示),则会出现错误消息“无法加载RSS”。这是一个jQuery问题,页面没有再次抓取结果?我已将它设置为在DOM准备就绪后执行,因此如果用户返回主页,我将无法再次加载Feed。
再次,任何帮助将不胜感激。
答案 0 :(得分:1)
听起来像是一个缓存问题。如果是这样,PhoneGap disable caching可能会对您有所帮助。您需要一个plugin,您可以将其安装为
phonegap local plugin add https://github.com/moderna/cordova-plugin-cache.git
并使用
document.addEventListener('deviceready', onDeviceReady); function onDeviceReady() { var success = function(status) { alert('Message: ' + status); } var error = function(status) { alert('Error: ' + status); } window.cache.clear( success, error ); }