Загрузить содержимое пакета приложения в гибридное приложение для нескольких устройств

Я использую предварительный просмотр гибридного приложения для нескольких устройств (который AFAIK использует Cordova) для создания кросс-платформенного приложения, но я не могу понять, как загрузить файл содержимого, который включен в пакет приложения.

Кажется, не существует какого-либо конкретного API Cordova для доступа к содержимому пакета приложений, поэтому я попытался загрузить его с помощью простого вызова jQuery ajax.

$.ajax({
    url: "./res/resource.txt", // relative path to www folder
    type: "get",
    contentType: "application/text",
    success: function (text) {
    },
    error: function (e) {
    }
});

но это приведет к ошибке Файл не найден. Я также попытался загрузить его, используя полный путь, например:

function getPhoneGapPath() {

    var path = window.location.pathname;
    path = path.substr(0, path.length - 10);
    return 'file://' + path;

};

$.ajax({
    url: getPhoneGapPath()+"/res/resource.txt", // relative path to www folder
    type: "get",
    contentType: "application/text",
    success: function (text) {
    },
    error: function (e) {

    }
});

но это приводит к ошибке Ошибка: доступ запрещен. Любые подсказки о том, как получить доступ к содержимому пакета приложения в кордове?


person Patrick Klug    schedule 18.05.2014    source источник
comment
Вы получаете эти ошибки в Ripple, эмуляторе Android, устройстве Android или iOS?   -  person Dai    schedule 18.05.2014
comment
@Dai Я тестировал в Windows 8 (локальная) и Ripple. еще не удалось заставить работать поддержку устройств.   -  person Patrick Klug    schedule 19.05.2014
comment
Почему бы не использовать API файловой системы?   -  person Raymond Camden    schedule 19.05.2014
comment
@RaymondCamden Я не могу понять, как это сделать. Похоже, что все примеры API FileSystem используют ‹input /› для доступа к файловому объекту.   -  person Patrick Klug    schedule 19.05.2014
comment
Ой? Я сам этого не видел. У меня есть несколько сообщений в блоге о FS API.   -  person Raymond Camden    schedule 19.05.2014


Ответы (1)


Используйте относительные пути, но потеряйте ./

eg

$.ajax({
    url: "res/resource.txt", // relative path to www folder
    type: "get",
    contentType: "application/text",
    success: function (text) {
    },
    error: function (e) {
    }
});

Помните, что если вы перейдете к более глубокому пути, такому как /foo/, ваш относительный путь будет основан на этом.

Одним из решений является разрешение вашего текущего пути на основе абсолютного пути приложения.

В процессе:

var basePath = window.location.href;

А затем создайте относительный путь на основе вашего текущего местоположения и базового пути.

person Kory Nunn    schedule 19.05.2014