【问题标题】:Is there any way to run javascript in iBooks without user interaction?有没有办法在没有用户交互的情况下在 iBooks 中运行 javascript?
【发布时间】:2013-01-14 21:21:57
【问题描述】:

我们一直在 iBooks 3 中测试 HTML 小部件,并在联机连接方面取得了一些成功。但是,缺点之一是它需要用户交互才能实际扩展小部件并运行 Javascript。有没有办法在 iBook 的后台运行 Javascript,而不需要在常规分页之外进行用户交互?

例如,如果我们想让 Mixpanel 在后台运行,我们应该怎么做?是否有另一种类型的小部件允许这种情况发生?或者除了 HTML 小部件之外还有其他运行 javascript 的东西吗?

编辑:澄清一下,我正在使用 iBooks Author 来创建完整的书籍,它具有在其中添加 HTML 小部件的功能。

【问题讨论】:

    标签: javascript ibooks mixpanel


    【解决方案1】:

    我假设您正在谈论使用 iBooks Author 创作的一本书,顺便说一下,这将是您提出问题的有用细节。我不知道 iBooks Author 或其小部件架构,也不知道它在多大程度上公开了将 JS 放置在页面上的能力。

    但是,在以 (X)HTML/JS/CSS 编写的“普通”电子书中,阅读器中的 JS 和 Web 浏览器中的 JS 没有本质区别。

    我不确定您所说的“在后台运行”是什么意思; JS 在某事告诉它时运行,无论该内容是放置在 SCRIPT 元素中的页面上,还是将其放置在 onLoad 或其他事件处理程序中。

    【讨论】:

    • 感谢您的澄清,我编辑了原始问题。我特别询问 iBooks 以及 JS 模型如何在其中工作。例如,没有 document.onload,因为它在 iBooks 中,所以有什么等价的吗?
    • 嗯,iBooks 中有一个document.onload。这基本上意味着文档已经,呃,加载并准备好使用。唯一的区别是文档不是通过网络加载,而是从 EPUB 文件中加载。
    【解决方案2】:

    ibooks 中的小部件在被用户激活之前不会执行 JS。因此,即使小部件的链接可能在您的书中可见,它也无法通过 ajax 建立连接或在启动之前执行任何其他操作。一旦启动,小部件也无法访问图书内容。如果你想在一个小部件中运行 mixpanel,你可以,但除非你的小部件还包含书籍的所有内容(和阅读系统),否则它没有意义。

    【讨论】:

    • 除了 iBooks 的小部件之外,你还能在其他任何地方运行 JS 吗?
    • 是的,ibooks 将运行嵌入在内容中的 JS,但在这种情况下,mixpanel 之类的东西将不起作用,因为入站/出站连接被禁止(无 ajax)。除此之外,您还可以运行 jQuery、进行 DOM 操作、CSS 动画等。
    • 哦,太棒了——有文档说明它是如何工作的吗?我只能在 epubs 中看到它,而不是原生 ibooks 格式(支持小部件)。
    • 我知道没有专门针对 ibook 的文档,尽管它是 webkit 的一个变体。 Apple 从未公开过它与移动 safari 之间的特殊差异,但我会查看移动 safari 的文档,看看哪些有效,哪些无效。
    猜你喜欢
    • 2019-11-12
    • 2010-11-21
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多