javascript - 让 javascript 了解 epub3 电子书中何时播放媒体叠加层

标签 javascript ibooks smil epub3

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

  • 有没有办法查明媒体叠加是否“事件”?最好有一些回调功能,否则我可以创建一个计时器并不断检查 js 的状态。
  • 一旦我知道(如果可能)有一个元素被突出显示,有没有办法知道这个元素是哪个 SMIL ID?

最佳答案

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

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

特别是,没有 IDPF 指定的方法来获取暴露给 EPUB 中嵌入的 JS 的媒体覆盖的状态(未开始/播放/暂停,哪个片段处于事件状态等)。

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

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

关于javascript - 让 javascript 了解 epub3 电子书中何时播放媒体叠加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527115/

相关文章:

javascript - 获取 Nodejs eval 的错误行

每次点击时Javascript其他功能

objective-c - UIDocumentInteractionController 将无法在 Ibook 中打开文档

svg - IE9的FakeSmile

css - 已弃用的 SMIL SVG 动画替换为 CSS 或 Web 动画效果(悬停、单击)

javascript - 在应用程序启动脚本中使用异步不返回任何结果

javascript - 向 D3 图形 y 轴标签添加换行符

javascript - 使用javascript在ibooks epub中查找当前查看页面的页码

ios - 从 iOS SDK 访问 iBooks 元素?

SVG SMIL 路径动画在 Safari 中不起作用