Подтвердить что ты не робот

Cordova DeviceReady не работает

Я несколько раз бил головой об этом. После получения нескольких ошибок "объект не определен" при попытке создать новый объект FileTransfer(), похоже, что проблема более простая - как-то событие DeviceReady не запускается.

У много проблем по этой проблеме, но большинство из них связано с сборками pre-3.x cordova, у которых была другая архитектура (я на 4.1.2). Я пробовал предложения по более новым темам, которые я мог найти - удаление и добавление плагинов, обновление кордовы и т.д. - безрезультатно. Чтобы попытаться изолировать проблему, я закомментировал код запуска всего несколькими строками:

Index.html:

<!DOCTYPE html>
<html>
<head>
  <title>Blah</title>
  <meta charset="utf-8"/>
  <meta name="viewport" content="initial-scale=1, user-scalable=no, minimum-scale=1, maximum-scale=1">
  <link href="res/topcoat/css/topcoat-mobile-light.min.css" rel="stylesheet">
  <link href="res/css/styles.css" rel="stylesheet">
  <link href="res/css/pageslider.css" rel="stylesheet">
  <script data-main="js/main" src="lib/require.js"></script>
</head>

Main.js:

require(["app/Application"], function (Application) {
  "use strict";

  document.addEventListener("deviceready", function(){
      $('body').html("<p>device is ready</p>");
  },true);

  $('body').html("<p>waiting...</p>");
});

Вместо того, чтобы отображать "устройство готово" в теле после бит, на экране отображается только "ожидание...". Это происходит как на эмуляторе iOS, так и в браузере (корреспондирование с кордорой).

Информация о Кордове:

$ cordova -v
4.1.2

Информация о плагине:

$ cordova plugins
org.apache.cordova.globalization 0.3.3 "Globalization"

(Я получаю те же результаты, если Глобализация не существует).

Есть ли другое место, которое я должен искать? Я запускаюсь из командной строки, если это имеет значение.

4b9b3361

Ответ 1

Я думаю, что в этом случае вам нужно включить cordova.js в ваше приложение, потому что я не вижу cordova.js в вашем примере

<script src="cordova.js"></script>

Примечание: путь до cordova.js зависит от того, где он находится в вашем приложении

Ответ 2

Это изначально не исправляло его для меня, пока я не удалил

< meta http-equiv="Content-Security-Policy" content=".." / >

Ответ 3

Недавно у меня была эта же проблема, но в моем случае cordova.js уже был правильно включен.

В конечном итоге то, что сработало для меня, было простым remove и add платформы ios:

cordova platform remove ios
cordova platform add ios

Прошло довольно много времени, так как я полностью перестроил платформу ios, и за это время произошли другие значительные изменения (обновление Cordova, обновление XCode и т.д.). Возможно, что моя config.xml или существующая сборка ios была как-то несовместима с последними требованиями Кордовы.

Ответ 4

Я пытаюсь исправить эту проблему для DAYS, и я, наконец, получил deviceready для запуска. Проблема заключалась в том, что я расширил js Object, чтобы вставить мои собственные команды hide и show. Удаление этих строк позволило deviceready вызвать:

Object.prototype.hide = function(){
    this.style.display = 'none';
}

Object.prototype.show = function(){
    this.style.display = 'initial';
}

Примечание: мне также пришлось иметь строку <script src="cordova.js"></script> , как упоминалось Александром Т