我正在使用 RSS 提要为 Windows 8 创建博客阅读器应用程序。部分代码:
function downloadBlogFeed() {
WinJS.xhr({ url: "http://feeds.feedburner.com/CssTricks" }).then(function (rss) {
var items = rss.responseXML.querySelectorAll("item");
for (var n = 0; n < items.length; n++) {
var article = {};
article.title = items[n].querySelector("title").textContent;
var thumbs = items[n].querySelectorAll("thumbnail");
if (thumbs.length > 1) {
article.thumbnail = thumbs[1].attributes.getNamedItem("url").textContent;
article.content = items[n].textContent;
articlesList.push(article);
}
}
});
}
因此,我的应用无法从 FeedBurner 读取提要。我得到这个错误
Can't load http://feeds.feedburner.com/~d/styles/itemcontent.css. An app can’t load remote web content in the local context.
我试过 http://feeds.feedburner.com/CssTricks?format=xml
和 http://feeds.feedburner.com/CssTricks?fmt=xml
,但同样的错误。
编辑:完整代码:http://jsfiddle.net/8n67y/
最佳答案
您遇到的错误不是因为您无法从 Feedburner 读取。这是因为您尝试加载到 DOM 中的内容中的某处引用了网络上的 CSS 文件 (itemcontent.css)。
当您在本地上下文中操作时,您不能从网络动态加载脚本或 CSS,因为这会给本地上下文带来安全风险。
看这里:
http://msdn.microsoft.com/en-us/library/windows/apps/hh465380.aspx
这里:
http://msdn.microsoft.com/en-us/library/windows/apps/hh465373.aspx
有关本地上下文和 Web 上下文之间的差异以及适用于每个上下文的限制的更多信息。
对于您的特定情况,我认为您应该尝试进一步解析内容(您可以在上面的代码中设置断点以检查提要返回的 XML 内容)以确定返回 CSS 文件引用的位置并以编程方式删除它(如果它位于一致的位置),或者找到另一种方法来消除 CSS 引用,这似乎是导致异常的原因(基于上面的有限信息)。
关于javascript - 无法在 Windows 8 应用程序中获取提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12855407/