让javascript知道何时在epub3电子书中播放媒体叠加层

时间:2015-04-08 23:29:19

标签: javascript ibooks smil epub3

我想有一些javascript代码修改元素的一些属性,这些属性正在作为媒体覆盖(smil驱动)的一部分播放。特别是,我对文本媒体叠加感兴趣,它会在播放某些音频时突出显示。我的问题有两方面:

  • 有没有办法找出媒体覆盖是否“活跃”?一些回调功能是最好的,否则我可以创建一个计时器并继续从js检查状态。
  • 一旦我知道(如果可能)有一个元素被突出显示,有没有办法知道这个是哪个SMIL ID?

1 个答案:

答案 0 :(得分:1)

EPUB 3规范允许嵌入在EPUB容器内的JavaScript内容仅通过epubReadingSystem对象与阅读应用程序“通信”。

不幸的是,规范要求仅暴露基本字段,如阅读系统的名称和版本,以及其脚本功能的探针(hasFeature)。请参阅:http://www.idpf.org/epub/301/spec/epub-contentdocs.html#app-epubReadingSystem

特别是,没有IDPF辅助方式来获取媒体覆盖的状态(未启动/播放/暂停,哪个片段处于活动状态等)暴露给EPUB中嵌入的JS。

当然,从理论上讲,人们可能会发现特定阅读系统的“黑客”(特别是如果它依赖于GUI的GUI,比如Readium或iBooks),并且能够将这些信息路由到JS代码在EPUB内部(由阅读系统呈现)。但当然这种方法很脆弱 - 正如你之前对我自己rb_smil_emulator.js的观察所知道的那样。

另一种可能性是监控DOM,跟踪应用于所有 SMIL片段的类的变化,但这种技术在时序性能/准确性方面可能会出现问题。