我正在使用Epub.js库在Phonegap项目中呈现.epub文件.
正确提取并解压缩了文件,但是如果在WebView中运行(在Desktop和android浏览器(Chrome应用)中完美运行),则屏幕显示为空白.
调试时,我发现应该在其中加载epub的iframe不起作用,因为从未调用过iframe.onload.他尝试访问的URL是
blob:file:/// 85a6ce73-2b5f-430e-a908-26a7d3d830e4,所以我猜测这可能是原因… Cordova不接受blob URI方案.
但是,我不知道有任何解决方法…我完全呆在那里.
解决方法:
我找到了解决方案.所有“ Cordova不接受URI”的答案始终是“白名单”
使用白名单插件,我在配置文件中:
<access origin="*" />
但是,调试时我发现在blobAllowNavigation中blob:/ file://…uri被阻塞了.然后我尝试了:
<access origin="*" />
<allow-navigation origin="*" />
但!它仍然没有用.进行了更多调试,我发现如果添加*,WhitelistPlugin并不能容纳所有内容,而只能包含http://,https://和data:.最后,添加:
<access origin="*" />
<allow-navigation href="*" />
<allow-navigation href="blob:*" />
为我解决了此问题.
另外,以防万一它对某人有帮助,在我进行测试时,我尝试从服务器下载.epub文件并将其提取到文件系统(/ data / data / package / …)中,然后从那里访问它.出于某种原因,使用XHR请求访问本地文件会返回状态:0,就像失败一样,但是响应在那里.如果设置了this.response,我必须编辑epub.js文件EPUBJS.core.requestmethod以接受响应(而不是期望this.status为200).