【问题标题】:deviceready not firing in cordovadeviceready 没有在科尔多瓦开火
【发布时间】:2016-03-11 04:10:41
【问题描述】:

我的 cordova 项目的 deviceready 没有正确触发(至少在 iOS 中)。我已经搜索了几个小时,但仍然无法弄清楚。我做错了什么吗? js/cordova.js 的路径也存在:

<html>
<head>
    <title>Geolocation</title>
    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi, user-scalable=no" />
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="css/app.css">
    <script type="text/javascript">

    // Fastclick
    if ('addEventListener' in document) {
        document.addEventListener('DOMContentLoaded', function() {
        FastClick.attach(document.body);
        }, false);
    }

    </script>
    <script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for device API libraries to load
    //
    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

    // device APIs are available
    //
    function onDeviceReady() {
        alert("ready");
        // Now safe to use device APIs
    }

    </script>
</head>
<body onload="onLoad()">

我不确定我缺少什么,因为如果我在 Chrome 中检查,我没有收到任何错误

【问题讨论】:

  • Chrome ?你需要执行APK我猜..
  • @RayonDabre 它也不会在我的 iOS 设备上触发。构建和部署需要时间,所以我通常从 python SimpleHTTPServer 检查服务前端文件以经常检查
  • deviceready 只会在本机应用程序中触发..不会在设备浏览器中触发..
  • @RayonDabre 我认为可能是这种情况,但无论哪种方式都不起作用,所以我不是 100% 确定
  • app 执行它,如果它不起作用..相应地更新您的问题..

标签: javascript cordova


【解决方案1】:

没有必要在您的www/js/ 文件夹中包含cordova.js,因为该文件从另一个位置复制到platforms/ios/platform_www(即通过运行:cordova build ios)与index.html 文件处于同一级别,所以为了有一个正确的配置,下一条语句:

<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>

必须改为:

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>

【讨论】:

  • 是的,但不是因为这个 - 我在下面添加了我的答案。我不知道为什么它以前没有这样工作,但现在可以了!
【解决方案2】:

deviceready 事件对于任何应用程序都是必不可少的。它表示 Cordova 的设备 API 已加载并可以访问。

更新

所以我通过从正文中删除 onload="onLoad()" 并替换它来“准备好”工作:

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

只有这个:

document.addEventListener("deviceready", onDeviceReady, false);

【讨论】:

  • @RayonDabre 哦,现在更有意义了!
  • @RayonDabre 原始帖子是从科尔多瓦网站复制和粘贴的,所以我觉得可以安全地假设他们自己网站上的一些简单的东西可以工作,但显然不行
  • 当应用启动时,我们需要等待deviceready事件,这样我们才能与PhoneGap API的部分交互...
  • 抱歉打扰了,@RayonDabre,你能把你复制的地方贴出来(在文档中)吗?
【解决方案3】:

我遇到了同样的问题,我的解决方案是添加:

<script type="text/javascript" src="cordova.js"></script>

在 HTML 文件中,一切正常

【讨论】:

    【解决方案4】:

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

    最终对我有用的是ios平台的简单removeadd

    cordova platform remove ios
    cordova platform add ios
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多