0

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

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

1 回答 1

1

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

不幸的是,该规范只要求公开基本字段,例如阅读系统的名称和版本,并探测其脚本功能(hasFeature)。见:http ://www.idpf.org/epub/301/spec/epub-contentdocs.html#app-epubReadingSystem

特别是,没有 IDPF 指定的方法来获取暴露给嵌入 EPUB 中的 JS 的媒体叠加层的状态(未启动/播放/暂停,哪个片段处于活动状态等)。

当然,理论上人们可能会为特定的阅读系统找到一个“hack”(尤其是如果它依赖于 JS 的 GUI,如 Readium 或 iBooks),并且能够将这些信息路由到 EPUB 中的 JS 代码(并由阅读系统呈现)。但是,这种方法当然是脆弱的——正如您从我之前对我自己的观察中所知道的那样rb_smil_emulator.js

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

于 2015-04-09T14:20:19.610 回答