【问题标题】:Epub.js - Phonegap not working because of blob URIEpub.js - 由于 blob URI,Phonegap 无法正常工作
【发布时间】:2015-11-03 16:05:41
【问题描述】:

我正在使用 Epub.js 库在 Phonegap 项目中呈现 .epub 文件。

文件被正确提取和解压缩,但如果在 WebView 中运行,则屏幕显示为空白(在桌面和 android 浏览器(Chrome 应用程序)中完美运行)。

调试,我看到应该加载 epub 的 iframe 不起作用,因为 iframe.onload 永远不会被调用。他试图访问的 URL 是 blob:file%3A///85a6ce73-2b5f-430e-a908-26a7d3d830e4,所以我猜这可能是原因... Cordova 不接受 blob URI 方案。

但是,我不知道任何解决方法...我完全被困在那里。

【问题讨论】:

    标签: javascript android cordova blob epub


    【解决方案1】:

    我得到了解决方案。所有“Cordova 不接受 URI”的答案总是“白名单”

    使用我的配置文件中的白名单插件:

    <access origin="*" />
    

    但是,调试时我看到 blob:/file://...uri 在 shouldAllowNavigation 中被阻止。然后我尝试了:

    <access origin="*" />
    <allow-navigation origin="*" />
    

    但是!它仍然没有工作。再调试一下,我看到如果添加*,WhitelistPlugin 将不允许所有内容,而只允许http://https://data:。最后,添加:

    <access origin="*" />
    <allow-navigation href="*" />
    <allow-navigation href="blob:*" />
    

    为我解决了这个问题。

    另外,以防万一它对某人有帮助,在我进行测试时,我尝试从服务器下载 .epub 文件并将其提取到文件系统 (/data/data/package/...) 并从那里。出于某种原因,使用 XHR 请求访问本地文件会返回 status: 0,就像失败一样,但响应就在那里。如果设置了this.response(而不是期望this.status成为200),我必须编辑epub.js 文件EPUBJS.core.requestmethod 以接受响应。

    【讨论】:

    • 您好,我正在尝试做同样的事情。我可以使用 File-Transfer 插件下载书籍,但无法打开它。你是怎么做到的?
    • 就我而言,我使用content-sync 插件下载了.epub。这个插件是用来下载和解压 zip 的(而 .epub 是一个 zip),所以这个插件是完美的。无论如何,当您获得解压目录的路径(例如“/data/data/package/files/files/my-book”)时,只需通过 ePub("file://" + path_to_dir) 调用 Epub.js。如果失败,请查看此this.status == 200 检查和...白名单,也许我从中触摸了一些东西以使其工作。
    • 试图复制你的成功,但没有成功。所有点都经过验证 - blob 被列入白名单,检查了 epub.js 并且看起来作者已经修复了这个问题。但现在我有一个 kCFErrorDomainCFNetwork code=1 错误......任何想法都将不胜感激
    • 请注意,cordova-plugin-whitelist 仅在 4.x 上受支持。 3.x 版本是否有类似的插件或其他实现相同的方法?
    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2014-10-10
    • 1970-01-01
    相关资源
    最近更新 更多