如何加载本地资源?

时间:2014-12-11 11:40:32

标签: ibm-mobilefirst

如何从Worklight访问资源(CSS,JS和存储在项目文件夹中的图像)? 例如,是否存在指向本地内部Worklight资源的绝对路径(Worklight URL)?或者也许是从文件系统加载资源的另一种方法? (我试图从本地加载资源的原因是为了加快页面加载速度)

enter image description here

2 个答案:

答案 0 :(得分:2)

编辑:通过评论中的讨论,听起来只需查看root设备中的文件系统就足够了。

编辑2:如果您要查找的是加载资源的最快选项,则不应该开始远程加载它们。将index.html放在设备中。您不能同时使用Portal远程加载内容,期望快速加载时间。根据定义,通过远程加载内容,您将遇到可能的减速。


Worklight不提供此路径。

从理论上讲,您可以使用Cordova File API访问应用程序的沙箱(以及Web资源)。

您可以获得对设备文件系统的引用:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

从那里,您可以访问应用程序的沙箱并找到所需的文件。由于您是将资源放入应用程序的人,因此您应该知道放置它的位置。

function gotFS(fileSystem) {
   fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
}

要试验并找出内容的路径,您可以将设备设为root,然后via Eclipse you could traverse the file system。这样您就可以找到所放置文件的路径。

答案 1 :(得分:0)

我设法访问运行 Android 环境的 Worklight 中的本地文件only way正在使用XMLHttpRequest

//Works only on Android
function prendiCaricaRisorsaWorklight(percorsoPiuNomeFile) {

    var xmlhttp = new XMLHttpRequest();
    var risposta = "";
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4
                && (xmlhttp.status == 200 || xmlhttp.status == 0)) {
            risposta = xmlhttp.responseText; 
            alert(risposta); 
        }
    }
    xmlhttp.open("GET", "file:///android_asset/www/default/"
            + percorsoPiuNomeFile, true);
    xmlhttp.send(null);
}

用法示例:

prendiCaricaRisorsaWorklight("css/cssInterno.css");
prendiCaricaRisorsaWorklight("js/jsInterno.js");

这会在 Android 上显示包含文件内容的提醒。