Epub.js - 由于 blob URI,Phonegap 无法正常工作

Epub.js - Phonegap not working because of blob URI

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

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

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

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

我得到了解决方案。所有 "Cordova doesn't accept URI" 的答案总是 "Whitelist"

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

<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 请求 returns status: 0 访问本地文件,好像失败了,但响应在那里。如果设置了 this.response,我必须编辑 epub.js 文件 EPUBJS.core.request 方法来接受响应(而不是期望 this.status 成为 200)。