无法获得在Windows 8应用饲料(Can't get feed in Windows 8

2019-09-24 00:55发布

我通过使用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的阅读饲料。 我得到这个错误

无法加载http://feeds.feedburner.com/~d/styles/itemcontent.css 。 应用程序不能加载本地环境远程Web内容。

我试过http://feeds.feedburner.com/CssTricks?format=xmlhttp://feeds.feedburner.com/CssTricks?fmt=xml ,但同样的错误。

编辑 :全码: http://jsfiddle.net/8n67y/

Answer 1:

你遇到的错误是不是因为你不能从Feedburner的读取。 这是因为在某处,你正在试图加载到DOM的内容是网络(itemcontent.css)在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参考,这似乎是什么引起的异常(基于上面的信息有限)的另一种手段。



Answer 2:

你所要做的可以用下面的代码来完成,而不是WinJS.xhr使用XMLHttpRequest。

下面的代码是我用我的UM RSS阅读器代码的一部分,它工作得很好,在所有情况下,我们可以donwload图片,文字,链接..任何你可以在饲料中找到( http://feeds.feedburner.com/CssTricks )获得的缩略图,所有工作得很好。

我还与以下修改进行了测试,

function connectToURL() {
    var url = "";

    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
         return;
    }   

    xmlHttp.onreadystatechange = stateChanged;
    xmlHttp.open("GET", url,true);
    xmlHttp.send(null);
}

// your job will actually start on this one...
function stateChanged() {
        if(xmlHttp != null )
            if (xmlHttp[item.key].readyState == 4 ) {
                try {
                    var xmlDoc = xmlHttp.responseXML.documentElement.getElementsByTagName("TAGYOUWANTTOGET");
                    for (var i = 0; i < xmlDoc.length; i++) {
                       xmlDoc[i].getElementsByTagName("TAG")[0].childNodes[0].nodeValue
                    }
                } catch (e) {
                   //work on the exception
                }
            }
        }     
}

function GetXmlHttpObject() {
    var xmlHttp = null;
    try {
        xmlHttp = new XMLHttpRequest();
    }
    catch(e) {
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }

    return xmlHttp;
}


文章来源: Can't get feed in Windows 8 app