是否可以在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>
答案 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)