我目前正在开发一个将使用 Media Overlay 的 epub3 项目。
我想在每个页面上添加 2 个按钮,一个用于播放歌曲,一个用于播放这首歌的无伴奏版本,使用带有媒体覆盖的文本突出显示。
有什么方法可以通过 javascript 访问阅读设备控件来触发类似的事情吗?换句话说,我想通过单击按钮而不是直接使用设备控件来大声朗读。
谢谢您的帮助 !
我目前正在开发一个将使用 Media Overlay 的 epub3 项目。
我想在每个页面上添加 2 个按钮,一个用于播放歌曲,一个用于播放这首歌的无伴奏版本,使用带有媒体覆盖的文本突出显示。
有什么方法可以通过 javascript 访问阅读设备控件来触发类似的事情吗?换句话说,我想通过单击按钮而不是直接使用设备控件来大声朗读。
谢谢您的帮助 !
简短的回答是:不,没有可靠的跨平台方法可以做到这一点。(我所说的“跨平台”是指“适用于任意阅读系统”。)
长答案是:EPUB 规范不要求阅读系统 (RS) 公开 Javascript 功能。对于那些确实具有 JS 功能的 RS,EPUB 规范不要求它们支持对其状态的“操纵”。此外,EPUB 规范要求每个内容文档(即 XHTML 文件)最多与一个 SMIL 文件相关联,而您需要创建两个:一个引用完整的音频文件,另一个引用无伴奏合唱音频文件。所以,在纸面上,没有办法做你想做的事。
在实践中,唯一提供 JS 句柄来控制媒体覆盖的 RS 是 iBooks(请参阅 iBooks 资产指南)。但它仅适用于 iBooks,并且仅适用于固定布局(预分页)再现。
如果您想编写自己的 Media Overlay 仿真 JS 库,可以查看https://github.com/pettarin/rb_smil_emulator。但是请注意,我本人不赞成使用它,因为它是一种非常脆弱的方法。