Относительные ссылки в твлм?
Можно ли использовать относительные ссылки в ТВЛ? У меня никогда не было проблем с их использованием на веб-странице, но я просто не могу заставить ее работать в моих документах на tvml.
Из моего стремительного:
static let TVBaseURL = "http://localhost:9001/"
В настоящее время это работает из моего ТВ, который находится на 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 ответ
Все зависит от того, как вы определяете ВАШ 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();
}
Который использует предустановленный baseURL, как ваш код. Таким образом, ваш документ поддержки поддерживает относительные ссылки. (а не универсальная ссылка. Полное размещение http://localhost:9001/index.xml сломает его.)
в этом примере XMLHttpRequest
объект open
функция, принимает полный URL, а не относительный. Подробнее о XMLHttpRequest можно узнать здесь.
Короче. Здесь нет ничего относительного.
Тем не менее, вы можете сделать что-то подобное с силой Javascript.
Когда вы получите XML-документ, вы можете найти все теги с document.getElementsByTagName("img")
, которые дают вам список элементов изображения. Тогда все, что нужно сделать, это посмотреть на каждого из них с .item(i)
, получить их атрибут источника по .getAttribute('src')
Посмотрите, начинается ли он с http или https, а если нет, установите новый с помощью .setAttribute('src', baseUrl+imagePath)