Относительные ссылки в твлм?

Можно ли использовать относительные ссылки в ТВЛ? У меня никогда не было проблем с их использованием на веб-странице, но я просто не могу заставить ее работать в моих документах на 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)

Другие вопросы по тегам