2017-04-11 109 views
0

我正在开发一个使用Cordova的应用程序,但没有使用Angular,因为应用程序需要非常快(只有纯JS和JQuery)。使用cordova.file加载下载的图像

的应用目前需要的文件数量较大的工作如此的,而不是把它们作为资产,产生了沉重的应用程序(1 GB以上的.apk文件),他们使用科尔多瓦下载文件夹中的cordova.file.dataDirectory内文件夹,因此可以在Android和iOS中以某种方式引用它们。

的问题是,图像都被定义在整个项目以这种方式(玉):

img(src="assets/icons/back.svg" width="20" height="20") 

或(笔)

.main 
    background url("assets/images/bg.png") 

所以,问题是:

  • 有没有方法可以加载codova.file.dataDirectory中的所有图像,而不改变.jade和.styl文件的路径定义?
  • 如果这是不可能的,有没有办法改变所有.jade和.styl文件的方式,他们默认从该文件夹加载图像? (比如用“/ file/in/cordova/assets/[whatever]”替换所有的“assets/[whathever]”)
  • 如果这也是不可能的,那个目录?
+0

如果这个文件,你需要的是所有图像,你根本无法把他们在公众的HTML文件夹,并加载它们使用html。所以你不必做一个解决方法。 – mtizziani

+0

@mtizziani他们不是,有更多的文件类型。此外,AFAIK无法使用Cordova下载到公共HTML文件夹,因为该文件夹是只读的:https://github.com/apache/cordova-plugin-file。另外,如果我将它们放在HTML文件夹中,然后构建应用程序,那么.apk权重将超过1GB。 – Potray

+0

我通过api将所有图像加载为base64和ajax请求。所以我没有与应用程序大小的问题。和我只加载我需要显示的图像 – mtizziani

回答

0

我解决了我的问题,通过使用JQuery改变背景图像的所有div的CSS。这是解决方案的一部分(我模糊的部分代码):

${'div'}.each(function(index, div){ 
 
    var backgroundImage = $(div).css('background-image') 
 
    $(div).css('background-image', processBackgroundImage(backgroundImage)); 
 
}) 
 

 
${'img'}.each(function(index, img){ 
 
    img.src = cordova.file.dataDirectory + processImageSrc(img); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>