Рендер xhtml файлов в div
От: Михaил  
Дата: 11.05.20 16:59
Оценка:
Привет
Пишу простенькую онлайн читалку для файлов epub на JS.
Задача такая:
есть набор корректных .xhtml файлов (главы), и нужно их отобразить внутри одной html страницы, друг за другом, чтобы получилась цельная книга, сделать это хочу локально. То есть, хотелось бы чтобы браузер сделал это сам, с помощью JS, не привлекая сервер. По сути требуется во-первых объединить все xhtml в один, а во-вторых как-то отрендерить их в, например, div.
Как такое можно сделать?

div.innerHtml не работает с xhtml, так как неправильно парсит xhtml элементы.
Отредактировано 11.05.2020 17:04 Михaил . Предыдущая версия .
Re: Рендер xhtml файлов в div
От: bnk СССР http://unmanagedvisio.com/
Дата: 11.05.20 17:56
Оценка:
Здравствуйте, Михaил, Вы писали:

М>Привет

М>Пишу простенькую онлайн читалку для файлов epub на JS.
М>Задача такая:
М>есть набор корректных .xhtml файлов (главы), и нужно их отобразить внутри одной html страницы, друг за другом, чтобы получилась цельная книга, сделать это хочу локально. То есть, хотелось бы чтобы браузер сделал это сам, с помощью JS, не привлекая сервер. По сути требуется во-первых объединить все xhtml в один, а во-вторых как-то отрендерить их в, например, div.
М>Как такое можно сделать?

М>div.innerHtml не работает с xhtml, так как неправильно парсит xhtml элементы.


Может DOMParser? типа так
    Promise.all([fetch('a.xhtml'), fetch('b.xhtml'), fetch('c.xhtml')])
      .then(response => Promise.all(response.map(r => r.text())))
        .then(texts => document.getElementById('output').innerHTML = texts.map(r => new DOMParser().parseFromString(r, 'text/xml').body.innerHTML).join())
Отредактировано 11.05.2020 18:24 bnk . Предыдущая версия .
Re: Рендер xhtml файлов в div
От: bzig  
Дата: 26.05.20 03:30
Оценка:
М>div.innerHtml не работает с xhtml, так как неправильно парсит xhtml элементы.

Какие такие xhtml элементы? xhtml — это просто более строгое подмножество html. Если чего-то не так работает, то, наверное, у тебя просто файл содержит валидный html, но невалидный xhtml. Если исправлять не хочется, просто поменяй расширение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.