javascript - 使用 JavaScript 修改 Windows 8 的 XML RSS Feed

标签 javascript iframe windows-8 rss

目前正在为特定站点制作 Windows 8 RSS 阅读器应用程序。由于该网站使用 <object></object>,所以除了视频 [通常是 YouTube] 之外一切正常。嵌入视频而不是 <iframe> .结果只是一个大的空白对象 block ,视频应该在哪里。

我的第一直觉是找到并替换 <object></object>带有 <iframe> 的标签并添加具有正确 URL 的 src 属性。我创建了一个虚拟应用程序来测试此方法是否有效,如果您要更改的只是静态 HTML,那么解决方案是否有效。

虚拟应用程序代码:

<body>
<div style="text-align: center;">
    <object width="853" height="480" id="test">
        <param name="movie" value="http://www.youtube.com/v/2rDs7W3WRIk?version=3&amp;hl=en_US"></param>
        <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
        <embed src="http://www.youtube.com/v/2rDs7W3WRIk?version=3&amp;hl=en_US" type="application/x-shockwave-flash" width="853" height="480" allowscriptaccess="always" allowfullscreen="true"></embed>
    </object></div>

编写并调用了以下函数,它确实有效。想做类似XML文档的事情:

 function setHTML5video() {
    var listOfSrcs = document.getElementsByTagName("embed");
    for (var i = 0; i < listOfSrcs.length; i += 1) {
        var videoSrc = document.getElementsByTagName("embed")[i].getAttribute("src");
        var newSrc = videoSrc.replace("/v/", "/embed/");            
        //var newNode = '<iframe width="853" height="480" src="' + newSrc + '" frameborder="0" allowfullscreen></iframe>'; 
        var iFrame = document.createElement("iframe");
        iFrame.setAttribute("src", newSrc);
        document.getElementsByTagName("object")[i].replaceNode(iFrame);
        //WinJS.Utilities.setOuterHTMLUnsafe(test, newNode);
    }
}

虚拟应用代码结束。

但是,由于缺乏对 Windows 8 API 的了解,尽管整天都在网上搜索答案,但我找不到如何对从外部站点下载的 XML 提要执行相同的操作。我可能遗漏了一些基本的东西。

function itemInvoked(z) {
        var currentArticle = articlesList.getAt(z.detail.itemIndex);                       
        WinJS.Utilities.setInnerHTMLUnsafe(articlecontent, currentArticle.content);
        articlelist.style.display = "none";
        articlecontent.style.display = "";
        mainTitle.innerHTML = currentArticle.title;             
        WinJS.UI.Animation.enterPage(articlecontent);        
    }

当用户单击缩略图时,相应文章的 XML RSS 提要将被提取并注入(inject)到 id = "articlecontent"中。我想在注入(inject)之前修改该提要。

<section id="content">
    <div id="articlelist" data-win-control="WinJS.UI.ListView"
         data-win-options="{ itemDataSource: mmoNewsPosts.ItemList.dataSource, itemTemplate: MMOItemTemplate }"></div> 
        <!-- Article Content -->       
    <div id="articlecontent"></div>        
        <!-- Article Content -->        
</section>

编辑,因为看起来很困惑,我已经通过 WinJS.xhr 加载了提要:

 function downloadMMOFeed(FeedUrl) {
  WinJS.xhr({ url: FeedUrl, responseType: "xml" }).then(function (rss) {
      pageTitle = rss.responseXML.querySelector("title").textContent;
      mainTitle.innerHTML = pageTitle;
      var items = rss.responseXML.querySelectorAll("item");
//more stuff...
for (var n = 0; n < items.length; n +=1) {
article.content = items[n].querySelector("description").textContent;
//more stuff...

最佳答案

您不能只通过 XHR 加载 XML 提要,然后在将结果绑定(bind)到页面之前解析结果吗?例如:

    WinJS.xhr({
    url: "http://www.w3schools.com/xml/note.xml", responseType: "xml"
})
    .done(
        function (request) {
            var text = request.responseText;
            //TODO : Parse the XML returned by the server which is in var text

        });

在 Windows 8 中没有跨域限制,所以这样的事情是完全可能的。

关于javascript - 使用 JavaScript 修改 Windows 8 的 XML RSS Feed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392551/

相关文章:

c# - 使用 C#、XAML 为 Windows 8 Metro 风格应用程序解析 html

java - IE 正在将 Controller 的响应作为文件

javascript - 减去考虑周末的天数

javascript - ons-popover 2.0 - 通过纯 JavaScript 而不是 Angular 调用

javascript - 从多个来源到单个列表的 knockout 映射而不删除未列出的项目

jquery - 将 CSS 添加到 iFrame

javascript - 无法访问 Google adx 返回的安全框架的内容

windows-8 - 如何检测 Windows 8 设备是否在 WiFi/LAN 或 3G 互联网连接上?

c# - MessageWebSocket用于连接的URI可以是IP地址,对吗?

javascript - 拖动时更改 HTML5 可拖动元素的 "clone"的文本