我已经在这个问题上敲了几天。得到一些"对象未定义"尝试创建一个新的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"
(如果全球化不存在,我会得到相同的结果)。
还有其他一些我应该看的地方吗?我是从命令行运行的,如果这有所不同的话。
答案 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
平台的简单add
和ios
:
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>
行