2015-01-09 4 views
13

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

Stack Overflow имеет много хитов по этой проблеме, но большинство из них связано с сборками 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>"); 
}); 

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

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

$ cordova -v 
4.1.2 

Plugin информация:

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

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

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

ответ

40

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

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

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

6

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

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

Спасибо - Это привело меня к моей проблеме, и это может быть связано с начальным проблема. Я нашел это на iOS, но не на Android, когда один из ваших файлов Javascript ссылается на удаленный сценарий или таблицу стилей, тогда он должен быть указан в политике безопасности контента. С Android вы получите сообщение об ошибке в консоли. С iOS он просто умирает молча и не указывает, в чем проблема. Проблема в том, что он не может попасть в один из сценариев, на которые ссылаются – ferdil

+0

Спасибо за отзыв. Почему так происходит? У меня нет удаленных сценариев –

0

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

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

cordova platform remove ios 
cordova platform add ios 

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

0

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

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

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

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

Смежные вопросы