这几天我一直在为这个问题苦苦思索。在尝试创建新的 FileTransfer() 对象时出现许多“对象未定义”错误后,看起来问题更加基本 - 不知何故,DeviceReady 事件没有触发。
Stack Overflow 在这个问题上有很多点击,但其中大多数都与具有不同架构的 3.x 之前的 cordova 版本有关(我使用的是 4.1.2)。我已经尝试了我能找到的较新主题中的建议——删除和添加插件、更新cordova等——但无济于事。为了尝试隔离问题,我将启动代码注释为几行:
索引.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 emulate browser)上。
科尔多瓦信息:
$ cordova -v
4.1.2
插件信息:
$ cordova plugins
org.apache.cordova.globalization 0.3.3 "Globalization"
(如果不存在全球化,我会得到相同的结果)。
我还应该寻找其他地方吗?我正在从命令行运行,如果这有什么不同的话。