1.需要在项目中加载一个 web 页面,所以就用的 react native 官方提供的 webview 组件(相关的代码和资源文件全部在本地放着)。
2.webview 在安卓下的路径为:source={{uri:"file:///android_asset/web/index.html"}}。
3.在 web 代码中用到了第三方库,需要本地的资源文件。我查看了下源码用的是 XMLHttpRequest 加载的。
4.以下设置都已经尝试过,但是没什么用
setJavaScriptEnabled(true); setAllowFileAccessFromFileURLs(true); setAllowUniversalAccessFromFileURLs(true);
5.web 页面可以在 android 下正常加载。
现在的问题是:在 android 下,每当加载到后缀名为.gz 的文件时,都会加载失败,但是在 ios 下表现正常(ios 下也是以 file://的 uri 加载的)。
由于本人主要是搞 js 的,对 android 没什么了解,所以求各位大神帮忙看看需要怎么做,本人表示感激不尽!
1
thomasyim 2017-12-02 13:54:13 +08:00
不太懂……不过为什么不去 Stack Overflow 问呢
|
2
dartabe 2017-12-02 13:56:50 +08:00
是权限设置问题吗? 我也是小白
|
3
rongyiran 2017-12-02 16:11:38 +08:00
你加载的时候报了什么错误,你要说出来啊?
|
4
rongyiran 2017-12-02 16:19:42 +08:00
我大胆猜测一下,可能还是因为你的路径加载错误了, fetch 封装了 XMLHttpRequest,可能跟你的网络请求关系不大.
我前段时间碰到了一个这样的错误,我用 formdata 上传文件,Android 和 iOS 上传图片没有问题,ios 上传视频也没问题,但是唯独 Android 有问题,当时就抛出了 XMLHttpRequest 的异常.当时我也以为是网络的问题,但是随着不断的尝试才发现,跟网络半毛钱关系都没有,我拍完视频后,返回了 uri 和 path,我上传的是 uri,因为 ios 穿的就是这参数,但是 Android 需要的却是 path.说这么多,也不知道你能不能看懂. |
6
chfight OP @rongyiran 谢谢回答! 应该不是路径问题,因为在 debug 版本中,可以用 require("web/index.html"),并且文件都能正常请求。
我现在的测试结果是:请求***.json.gz 文件的时候执行了 XMLHttpRequest 的 onerror 函数,并且 status 为 0(其他文件正常)。 还有一点就是 XMLHttpRequest 是在 worker 中执行的。 |
7
faywong8888 2017-12-02 17:56:08 +08:00 via iPhone
改个文件后缀名试试
|