epub 中的链接是否有 onclick ( ontap ?) 会强制页面为非线性文件?

Is there an onclick (ontap?) for a link in epub that will force the page to a non-linear file?

提问人:John O 提问时间:9/1/2023 更新时间:9/1/2023 访问量:43

问:

我在 metadata.opf 文件中有几个标记为非线性的页面:

<itemref idref="id18" linear="no"/>
<itemref idref="id19" linear="no"/>
<itemref idref="id20" linear="no"/>

当这本书在 Apple Books 中打开时,我单击/点击指向其中一个的链接(例如,从目录中,但也从其他地方),而不是导航到该页面,Books 似乎想将其视为某种脚注,并且只显示浮动窗口或排序(例如在常规网页上悬停文本)。

我希望它直接导航到页面。在网页中(如果有必要),您可以执行类似操作,并且它会像常规链接一样工作。有没有办法在 epub 中实现类似的功能?onclick="window.location=url"

支持什么 javascript 只是稀疏的文档,没有示例(更不用说相关示例了)......我找不到太多关于这个的东西。如果 javascript 在 Books 之外被忽略,那也没关系,因为其他 epub 阅读器似乎表现得更好。

链接:

Link example

单击链接时:

When links are clicked

Javascript epub iBooks epub3

评论


答:

2赞 granite 9/1/2023 #1

我们在 XHTML 页面上使用后备 JS 'ahref' 链接。iBooks 规格表明 JS 编码很好(iBooks 1.5 或更高版本、iOS 5.0 或更高版本、macOS X Mavericks 10.9 或更高版本)。我们使用的回退代码是:

<a href="./text/section-02.xhtml" class="button" onclick="location.assign('./text/section-02.xhtml'); return false;">Fallback</a>

这种回退只是意味着 -- 首先,常规的“ahref”在点击时被触发,然后如果由于某种未知原因它没有触发,则“return false”表示在与“onclick”相同的点击中转到此页面。 此信息来自此来源(此外,FF MDN Web Docs 中也有很好的信息):StackOW3S

有几种方法可以将 JS 回退呈现为 'assign'、'replace'、'href',值得详细阅读 SO 链接(这是一个很长的讨论,还有其他几个链接也值得阅读)。

也。。。标签可能是弹出窗口的原因...... 或者,如果它位于同一网络链接中,它可能是代码中的“epub:type”。这可能会导致 EPUB 以弹出框的形式打开该链接。如。。。<aside>

epub:type="noteref"

评论

0赞 John O 9/2/2023
谢谢。location.assign() 确实有效(某种程度上),我什至删除了 href attrib,而 assign() 将我发送到页面。但是,它仍然使用带有弹出窗口的奇怪渲染。我设法弄清楚了如何使用检查器......在控制台中手动设置位置会使用奇怪的渲染。它与“图书”呈现非线性页面的方式相关联。当它显示时,我什至无法在检查器中找到它的标记。