4

現在、特定のサイト向けの Windows 8 RSS リーダー アプリを作成しています。Web サイト<object></object>では<iframe>. その結果、ビデオがあるはずの場所に大きな空白のオブジェクト ブロックができてしまいます。

<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 フィードがプルアップされ、id = "articlecontent" で に挿入されます。注入する前にそのフィードを変更したい。

<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...
4

1 に答える 1

0

XML フィードを XHR で読み込んで、ページにバインドする前に結果を解析することはできませんか? 例えば:

    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 ではクロス ドメイン制限がないため、このようなことは完全に可能です。

于 2012-11-15T22:46:21.007 に答える