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
)。
我正在使用 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
)。