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

时间:2015-08-11 12:20:44

标签: javascript android cordova blob epub

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

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

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

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

1 个答案:

答案 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.status200)。