Cordova DeviceReady没有开火

eb1*_*eb1 23 javascript cordova cordova-cli

这几天我一直在敲打这个.在尝试创建新的FileTransfer()对象时获得许多"对象未定义"错误后,看起来问题更基本 - 不知何故,DeviceReady事件未触发.

Stack Overflow在这个问题上有很多点击,但是大多数都与3x之前的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>
Run Code Online (Sandbox Code Playgroud)

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>");
});
Run Code Online (Sandbox Code Playgroud)

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

科尔多瓦信息:

$ cordova -v
4.1.2
Run Code Online (Sandbox Code Playgroud)

插件信息:

$ cordova plugins
org.apache.cordova.globalization 0.3.3 "Globalization"
Run Code Online (Sandbox Code Playgroud)

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

还有其他地方我应该看吗?我正在从命令行运行,如果这有所不同.

Ale*_* T. 51

我想在这种情况下你需要包含cordova.js在你的应用程序中,因为我没有cordova.js在你的例子中看到

<script src="cordova.js"></script>
Run Code Online (Sandbox Code Playgroud)

注: 路径cordova.js取决于它位于你的应用程序


小智 10

在我删除之前,这并没有最初为我解决

< meta http-equiv="Content-Security-Policy" content=".." / >
Run Code Online (Sandbox Code Playgroud)

  • 谢谢 - 这让我遇到了我的问题,它也可能与最初的问题有关。我在 iOS 上发现了这一点,但在 Android 上没有发现,当您的 Javascript 文件之一引用远程脚本或样式表时,它必须列在 Content-Security-Policy 中。使用 Android 时,您会在控制台中收到一条错误消息。在 iOS 中,它只是默默地死去,并没有指出问题所在。问题是它无法访问被引用的脚本之一 (3认同)