Cordova DeviceReady没有开火

时间:2015-01-09 16:47:13

标签: javascript cordova cordova-cli

我已经在这个问题上敲了几天。得到一些"对象未定义"尝试创建一个新的FileTransfer()对象时出现错误,看起来问题更基本 - 不知何故,DeviceReady事件没有触发。

Stack Overflow在这个问题上有很多点击,但是大多数都与3.x版之前的cordova版本有不同的架构(我在4.1.2上)。我已经尝试了我能找到的新主题中的建议 - 删除和添加插件,更新cordova等 - 无济于事。为了尝试隔离这个问题,我已经将启动代码注释为几行:

的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>");
});

而不是显示&#34;设备准备就绪&#34;在一点点后身体,屏幕只显示&#34;等待...&#34;。这在iOS模拟器和浏览器(cordova模拟浏览器)上都会发生。

科尔多瓦信息:

$ cordova -v
4.1.2

插件信息:

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

(如果全球化不存在,我会得到相同的结果)。

还有其他一些我应该看的地方吗?我是从命令行运行的,如果这有所不同的话。

4 个答案:

答案 0 :(得分:50)

我认为在这种情况下,您需要在应用中加入cordova.js,因为我在您的示例中看不到cordova.js

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

注意: 路径 cordova.js取决于它在您的应用中的位置

答案 1 :(得分:8)

在我删除

之前,我最初没有为我修复它
< meta http-equiv="Content-Security-Policy" content=".." / >

答案 2 :(得分:1)

我最近遇到了同样的问题,但在我的情况下,cordova.js已被正确包含在内。

最终对我有用的是remove平台的简单addios

cordova platform remove ios
cordova platform add ios

自从我完全重建ios平台以来,已经有一段时间了,并且在此期间发生了其他重大变化(Cordova升级,XCode升级等)。我的config.xml或现有ios版本可能不符合最新的Cordova要求。

答案 3 :(得分:0)

我一直在尝试为DAYS解决这个问题,我终于让deviceready触发了。问题是我扩展了js Object以插入我自己的hide和show命令。删除这些行允许deviceready触发:

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

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

注意:我还必须拥有Alexander T

提到的第<script src="cordova.js"></script>