我正在 InDesign 中开发一个 epub。我在文档的母版页上创建了一个按钮和一个覆盖一些文本的元素。如果单击该按钮,则元素应消失以显示下面的内容。我想通过单击按钮来保存按钮的状态,因此在翻页时,它与之前的页面上相同(覆盖或未覆盖(,直到用户再次单击。 我写了一个JavaScript,因为我认为我可以一次"操纵"epub的所有页面来实现这一点。不幸的是,我的方法有两个问题,可能相关,所以我将它们一起发布:
1( 我在导出窗口中添加 js 文件,InDesign 会自动将脚本标签用于导入 js 文件,它位于每个 xhtml 文件的头部部分。当我打开一个 xhtml 文件时,我收到"未捕获的类型错误:无法读取未定义的属性'样式'"错误。但是当我手动将其放在正文部分的末尾时,脚本有效。
var cover = document.getElementsByClassName("cover")[0];
var button_none = document.getElementsByClassName("button_none")[0];
var button_inline = document.getElementsByClassName("button_inline")[0];
// var button_status = 1;
if (button_status ==1){
button_none.style.display ="inline";
button_inline.style.display ="none";
cover.style.display = "inline";
}
else{
button_none.style.display ="none";
button_inline.style.display ="inline";
cover.style.display = "none";
}
button_none.onclick = function() {
cover.style.display ="none";
button_none.style.display ="none";
button_inline.style.display = "inline";
// button_status = 0;
// return button_status;
}
button_inline.onclick = function() {
cover.style.display ="inline";
button_none.style.display ="inline";
button_inline.style.display = "none";
// button_status = 1;
// return button_status;
}
因为 epub 的每个页面都是一个单独的 xhtml 文件,所以在每个文件中更改它非常耗时。也许有更好的方法来完成这项工作,或者这甚至与第二个问题有关?
2(因为每个页面都是一个单独的 xhtml 文件,所以我使用变量来"保存"按钮状态的方法不起作用,因为它在下一页上不一样。我从来没有在不同的文件之间传递变量,这就是为什么我不知道当我弄清楚如何传递变量时,我的方法是否可以像我认为的那样工作?
另一个想法是设置一个保存按钮状态的"数据值",但有了这个,我也不知道如何在我的 100+ 页面 epub 中传递它。我对此进行了一些研究,但只找到了表单的获取方法,但没有任何东西可以在我的情况下使用。
如果有人能帮我解决这个问题,我会很高兴,因为自己尝试我一事无成。也许我的整个方法从一开始就不好?
在桌面上,我使用AZARDI打开epubs,在移动Kobo Books或Infinity阅读器和Chrome上检查xhtml文件。
EPUB3 查看器在有限的浏览器环境中运行。它们具有与完整Web浏览器相同的功能,但不是全部。你提到你打开了一个生成的XHTML文件,但你没有说如何。如果您使用的是 Firefox 或 Google Chrome,则无法正确测试该文件。
可以在 EPUB3 中对多个页面进行批量编辑,但使用 Calibre 可能会有更好的运气。 https://calibre-ebook.com/
Calibre 也可以帮助您诊断和修复您遇到的样式错误。
一些(但肯定不是全部(EPUB3 查看器支持 localStorage API。您应该尝试使用它来存储需要在页面之间访问的信息。我找到了一个演示该技术的示例存储库:https://github.com/AnadoluUniversity/Localstorage-with-EPUB3-master