Использование строк запроса внутри файла EPUB3

Я делаю книгу EPUB3, содержащую 140 (коротких) видео. Есть индекс-файл с гиперссылками на отдельный showVideo.html файл, содержащий элемент видео HTML5. Моя идея заключалась в том, чтобы отправить каждое имя файла видео через строку запроса на showVideo.html который читает строку запроса через javascript и помещает значение в элемент video.

Ссылка на индексный файл:

<a href="showVideo.html?unit=E1">Click to watch E1</a>

Это действительно работает, если я напишу следующий код в manifest из моего content.opf файл:

<item id="vid_player" href="showVideo.html?unit=E1"
 media-type="application/xhtml+xml"/>

Но если я сделаю это таким образом, я должен добавить 140 пунктов в манифест. Простое исключение строки запроса в манифесте не работает:

<item id="vid_player" href="showVideo.html" 
 media-type="application/xhtml+xml"/>

У вас, ребята, есть решение? Метод строки запроса был только моей идеей, может быть, есть лучшая техника.

Спасибо

Marvin

3 ответа

Решение

Избежать epubcheckСлишком придирчивая проверка, вы можете сделать следующее.

  1. Добавить data-video приписать <a> элемент, как в <a data-video='E1'>,

  2. Добавить прослушиватель событий в click событие на соответствующем <a> элементы.

  3. В обработчике события установите location.href в "showRef.html?Unit=" + elt.dataset.video или эквивалент

  4. В showRef.html, разобрать строку запроса и сделать правильные вещи.

Так как вы все равно используете JS для анализа идентификатора видео, попробуйте использовать идентификатор фрагмента вместо параметра запроса: <a href="showVideo.html#E1"> Вы не получите ошибку проверки таким образом, и вы можете получить значение в JS как location.hash,

Если вы действительно хотите использовать JavaScript для этого, попробуйте то, что предложила Лиза Дейли, имея в виду, что ваша электронная книга EPUB 3 теперь, вероятно, будет работать только на iBooks (возможно, в приложениях Readium и Kobo).

Если ваша единственная цель - "выбрать" видео, почему бы вам просто не сгенерировать одну страницу XHTML для каждого видео и не указать им ссылки из списка воспроизведения? В конце концов, 140 - это не большое количество элементов, которые нужно добавить в манифест.

Кроме того, вы можете создать одну страницу XHTML, скажем, videoplayer.xhtml, с помощью divs (со связанными свойствами CSS page-break-after, page-break-before) как это:

<div class="videoplayer" id="video001">
 <video src="video001.mp4" ... />
</div>
<div class="videoplayer" id="video002">
 <video src="video002.mp4" ... />
</div>
...
<div class="videoplayer" id="video140">
 <video src="video140.mp4" ... />
</div>

так что ваш плейлист будет ссылаться на videoplayer.xhtml#video001и т. д. Не используя JavaScript, у вас больше шансов, что он будет работать на нескольких устройствах.

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