是否可以在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>
这完全取决于您如何定义getDocument
函数。但是从您的代码来看,它很可能看起来有点像官方 TVML 编程指南第 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();
}
它像您的代码一样使用预设的基本 URL。因此,您的获取文档支持相对链接。(而不是通用链接,放置完整的 http://localhost:9001/index.xml 会破坏它。
在此示例中,XMLHttpRequest
对象open
函数采用完整的 URL,而不是相对 URL。阅读更多关于XMLHttpRequest 打开在这里。
总之。这里没有什么是相对的。
但是,您可以使用Javascript的强大功能做类似的事情。
当您掌握 XML 文档时,您可以找到带有 document.getElementsByTagName("img")
的所有标记,这为您提供了图像元素的列表。然后剩下的就是用.item(i)
查看它们中的每一个,通过.getAttribute('src')
获取它们的源属性,看看它是以http还是https开头,如果没有,则按.setAttribute('src', baseUrl+imagePath)
设置新的