當前爲特定站點製作Windows 8 RSS閱讀器應用程序。由於網站使用<object></object>
來嵌入視頻而不是,因此除了視頻[通常是YouTube],所有內容都可以正常工作。結果只是視頻應該存在的大空白對象塊。使用JavaScript修改Windows 8的XML RSS Feed
我的第一本能是找到並用代替<object></object>
標籤,並將src屬性添加到正確的URL中。我創建了一個虛擬應用程序來測試此方法是否可行,並且解決方案能夠正常工作,如果您只是在更改靜態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&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&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 Feed執行相同操作。我可能錯過了一些基本的東西。
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」。我想在注入之前修改該Feed。
<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...
想我找到了解決方案;明天我會有時間發佈更新。 – Arctic