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"
(Я получаю те же результаты, если Глобализация не существует).
Есть ли другое место, которое я должен искать? Я запускаюсь из командной строки, если это имеет значение.
Ответы
Ответ 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>
, как упоминалось Александром Т