我正在使用Epub.js库在Phonegap项目中呈现.epub文件。
文件被正确获取并解压缩,但如果在WebView中运行(在桌面和Android浏览器中完美运行(Chrome应用程序)),则屏幕显示为空白。
调试,我看到应该加载epub的iframe
不起作用,因为iframe.onload
永远不会被调用。他试图访问的URL是
blob:file%3A///85a6ce73-2b5f-430e-a908-26a7d3d830e4
,所以我猜这可能是原因...... Cordova不接受blob
URI方案。
但是,我不知道有任何解决方法......我完全被困在那里。
答案 0 :(得分:3)
我得到了解决方案。所有“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
,就像失败一样,但响应就在那里。我必须编辑epub.js文件EPUBJS.core.request
方法,以便在设置this.response
时接受回复(而不是期望this.status
为200
)。