让 javascript 知道何时在 epub3 电子书中播放媒体覆盖
Make javascript aware of when media overlays are being played in an epub3 ebook
我想要一些 javascript 代码来修改作为媒体覆盖(smil 驱动)的一部分播放的元素的某些属性。特别是,我对文本媒体覆盖感兴趣,它会在播放某些音频时突出显示。我的问题有两个:
- 有没有办法查明媒体覆盖是否 "active"?一些回调功能是最好的,否则我可以创建一个计时器并继续检查 js 的状态。
- 一旦我知道(如果可能的话)有一个元素被突出显示,有没有办法知道这个元素是哪个 SMIL ID?
EPUB 3 规范允许 JavaScript 嵌入 EPUB 容器的内容 "communicate" 仅通过 epubReadingSystem
对象与阅读应用程序一起使用。
不幸的是,该规范只要求公开基本字段,例如阅读系统的名称和版本,以及对其脚本功能的探测 (hasFeature
)。参见:http://www.idpf.org/epub/301/spec/epub-contentdocs.html#app-epubReadingSystem
特别是,没有 IDPF 指定的方法来获取暴露于嵌入在 EPUB 中的 JS 的媒体叠加层的状态(不是 started/playing/pausing,哪个片段处于活动状态等)。
当然,理论上人们可能会找到一个针对特定阅读系统的 "hack"(特别是如果它的 GUI 依赖于 JS,如 Readium 或 iBooks),并且能够路由这些信息片段到 EPUB 中的 JS 代码(并由阅读系统呈现)。但是当然这种方法是脆弱的——正如你从我之前对我自己的观察中知道的那样 rb_smil_emulator.js
.
另一种可能性是只监视 DOM,跟踪 类 中应用于 所有 SMIL 片段的变化,但这种技术可能在时间方面证明有问题 performance/accuracy.
我想要一些 javascript 代码来修改作为媒体覆盖(smil 驱动)的一部分播放的元素的某些属性。特别是,我对文本媒体覆盖感兴趣,它会在播放某些音频时突出显示。我的问题有两个:
- 有没有办法查明媒体覆盖是否 "active"?一些回调功能是最好的,否则我可以创建一个计时器并继续检查 js 的状态。
- 一旦我知道(如果可能的话)有一个元素被突出显示,有没有办法知道这个元素是哪个 SMIL ID?
EPUB 3 规范允许 JavaScript 嵌入 EPUB 容器的内容 "communicate" 仅通过 epubReadingSystem
对象与阅读应用程序一起使用。
不幸的是,该规范只要求公开基本字段,例如阅读系统的名称和版本,以及对其脚本功能的探测 (hasFeature
)。参见:http://www.idpf.org/epub/301/spec/epub-contentdocs.html#app-epubReadingSystem
特别是,没有 IDPF 指定的方法来获取暴露于嵌入在 EPUB 中的 JS 的媒体叠加层的状态(不是 started/playing/pausing,哪个片段处于活动状态等)。
当然,理论上人们可能会找到一个针对特定阅读系统的 "hack"(特别是如果它的 GUI 依赖于 JS,如 Readium 或 iBooks),并且能够路由这些信息片段到 EPUB 中的 JS 代码(并由阅读系统呈现)。但是当然这种方法是脆弱的——正如你从我之前对我自己的观察中知道的那样 rb_smil_emulator.js
.
另一种可能性是只监视 DOM,跟踪 类 中应用于 所有 SMIL 片段的变化,但这种技术可能在时间方面证明有问题 performance/accuracy.