Почему cordova-plugin-nativestorage работает в браузере, а не в телефоне - PullRequest
0 голосов
/ 26 июня 2018

Я использую CLI Phonegap для обслуживания своего проекта, и моя версия плагина: 2.3.1 Итак, я написал следующий код для выполнения после того, как устройство будет готово:

NativeStorage.getItem("abcd",function(){
			console.log("success");alert("success");
		},function(){
			console.log("fail");alert("failed :)");
		});

Это прекрасно работает, когда я тестирую его в своем браузере. Однако, когда я открываю это приложение на своем телефоне Android, код NativeStorage вообще не работает.

Я использовал weinre для отладки своего приложения:

Я получил ошибку: ReferenceError: NativeStorage не определено enter image description here

Я также удалил плагин и все платформы и заново установил их; однако, я все еще получаю ту же ошибку.

Не могли бы вы помочь мне найти проблему?

1 Ответ

0 голосов
/ 26 июня 2018

Ожидаете ли вы, что ваше устройство готово, прежде чем вызывать плагин NativeStorage?

В ваш index.js вы должны добавить что-то вроде следующего кода для обработки устройства.

if (window.cordova) {
  document.addEventListener("deviceready", onDeviceReady, false);
}

Примечание. Если вы хотите использовать свое приложение в браузере без контейнера Cordova, вам следует определить ветку else, подобную этой. Если это не контейнер Cordova, он перейдет к ветви else и немедленно выполнит функцию.

if (window.cordova) {
  document.addEventListener("deviceready", onDeviceReady, false);
} else {
  onDeviceReady();
}

document.addEventListener ("deviceready", onDeviceReady, false)

  • Параметр 1 - «deviceready»: название события
  • Параметр 2 - onDeviceReady: имя вашей функции для запуска вашего приложения. Имя может конечно отличаться от моего имени.
  • Параметр 3 - false (необязательно): логическое значение, которое указывает, должно ли событие быть выполненным в процессе захвата или в фазе барботирования. (Источник: w3schools.com)

Для получения дополнительной информации о addEventListener: https://www.w3schools.com/jsref/met_document_addeventlistener.asp

В вашей функции "onDeviceReady" или более поздней версии вы можете теперь вызывать плагины, которые вы определили в config.xml

например:.

function onDeviceReady() {
  //call your plugins
  NativeStorage.getItem(<...>);
}

Надеюсь, это поможет.

...