tvml中的相对链接?

时间:2017-10-21 21:45:53

标签: swift tvos tvml

是否可以在tvml中使用相对链接?我在网页上使用它们从来没有遇到过问题,但是我无法在我的tvml文档中使用它们。

从我的快速:

static let TVBaseURL = "http://localhost:9001/"

这目前可以在我的tvml中找到,它位于http://localhost:9001/templates/home.xml

 <lockup onselect="getDocument('templates/Featured.xml')">
   <img src="http://localhost:9001/graphics/icons/ICON_featured.png" width="313" height="600" />
 </lockup>

请注意,onselect链接是相对的,并且可以正常工作。但这不起作用......

<lockup onselect="getDocument('templates/Featured.xml')">
  <img src="../graphics/icons/ICON_featured.png" width="313" height="600" />
</lockup>

1 个答案:

答案 0 :(得分:2)

这完全取决于您如何定义getDocument功能。但是从您的代码中,很可能看起来有点像official TVML Programming Guide, sec 8-3中的这个。

function getDocument(extension) {
    var templateXHR = new XMLHttpRequest();
    var url = baseURL + extension;

    loadingTemplate();
    templateXHR.responseType = "document";
    templateXHR.addEventListener("load", function() {pushPage(templateXHR.responseXML);}, false);
    templateXHR.open("GET", url, true);
    templateXHR.send();
}

使用预设的baseURL,就像你的代码一样。因此,您的获取文档支持相关链接。 (而不是通用链接。完整的http://localhost:9001/index.xml会破坏它。)

在此示例中,XMLHttpRequest对象open函数采用完整网址,而不是相对网址。详细了解XMLHttpRequest open here

简而言之。没有什么是相对的。

但是,您可以使用Javascript的强大功能执行类似操作。

当您获得XML文档时,您可以找到document.getElementsByTagName("img")的所有标记,它会为您提供图像元素的列表。然后剩下的就是用.item(i)来查看每个属性,通过.getAttribute('src')获取它们的源属性,看看它是以http还是https开头,如果没有,请设置新的.setAttribute('src', baseUrl+imagePath)