apicloud貌似不支持/代表项目根目录,于是很多深入目录写的时候,公共文件定义文件目录就有些麻烦,一级与二级路径写法是不一样的,于是封装了个获取文件根目录的方法与拼装方法来使用,在此记录下
原理:
通过各级目录的html里面 输出 location.href
<script>
console.log(location.href);
</script>
结果:
file:///storage/emulated/0/UZMap/wgt/A6051165374466/index.html
file:///storage/emulated/0/UZMap/wgt/A6051165374466/html/frame0.html
file:///storage/emulated/0/UZMap/wgt/A6051165374466/html/frame1.html
我们可以发现一个规律,那就是 file:///storage/emulated/0/UZMap/wgt/A6051165374466/ 是相同的,当然不同项目,不同手机这个值不相同,但是 A6051165374466 是你的项目APP_ID,你自己配的,它是不会变的。
于是我们可以通过 APP_ID(A6051165374466,api.appId 可以获取) 进行字符串分隔
location.href.split("/A6051165374466/");
可以得到 file:///storage/emulated/0/UZMap/wgt,那么我们再拼接 A6051165374466 ,与我们想拼接的 地址如:/image/loading_more.gif
file:///storage/emulated/0/UZMap/wgt/A6051165374466/image/loading_more.gif
ok,原理讲完了,上代码
html加入以下代码用于调试组装出来的图片地址是否有效
<img src="" id="myimg" width="100%" />
//调试
var img = get_root_path()+'/image/loading_more.gif';//第一种写法(少封装一个函数)
var img = file_path('/image/loading_more.gif');//拼装写法(推荐:方便后期统一修改)
document.getElementById('myimg').src = img;
console.log(img);
//组装文件路径
function file_path(file){
return get_root_path()+file;
}
//获取绝对路径
function get_root_path(){
var APP_ID = api.appId;//如:A6051165374466;
var arr = location.href.split("/"+APP_ID+"/");
var root_path = arr[0]+"/"+APP_ID;
return root_path;
}
到此完成啦
未经允许不得转载:小罗同学 » apicloud获取项目绝对路径与拼装文件绝对路径