【问题标题】:Cordova is not defined after onDeviceReady在 onDeviceReady 之后没有定义 Cordova
【发布时间】:2017-02-25 10:48:47
【问题描述】:

我正在尝试构建一个 Cordova 应用程序并在 Ripple 中对其进行测试。当我启动应用程序时,onDeviceReady 钩子会触发,并且我有 cordova 变量,并且我的所有插件变量都可以访问。

但是在应用程序加载后,我尝试从控制台访问cordova,例如,它是未定义的。

我不确定发生了什么,但不知何故它消失了。它是否应该与 Ripple 一样工作,或者我必须只在真实设备/模拟器上测试所有内容?

附:它也发生在 VS2015 中创建的一个全新的空白项目中。所以我真的不明白我应该如何访问cordova 和插件,如果它以某种方式变得未定义?

【问题讨论】:

  • @llya 请添加一些代码 sn-p...
  • @Gandhi 真的没有代码 sn-p,在应用程序加载后,我只是尝试在控制台中访问cordova,但它不可用......它不会以同样的方式用于我的在onready之外拥有自己的js代码...
  • 您的设备就绪事件是否被触发? Cordova 插件只能通过设备就绪回调侦听器访问
  • 是的,设备就绪工作正常。但是,如果仅在设备准备就绪期间,我将如何使用插件?或者它们总是在真实的设备/模拟器上可用?
  • 它不仅在设备就绪期间,而且在设备就绪事件被触发之后......我建议您查看此链接以获取示例而不是解释 - github.com/gandhirajan/Cordova_QR_Scanner/blob/master/www/js/…

标签: cordova cordova-plugins visual-studio-cordova ripple


【解决方案1】:

在您使用 Cordova 构建应用程序后,您的 index.html 中引用的 Cordova.js 就可用。 在浏览器中测试时,该文件不可用。 由于您是在不是移动仿真器的涟漪仿真器上进行测试,因此您只会得到未定义的 cordova。

在模拟器/设备上运行 Cordova 应用程序,然后您将获得 cordova 变量。

【讨论】:

  • 浏览器平台在构建平台后也有可用的 Cordova.js 文件。事实上,浏览器平台也支持一些插件。所以我认为它不是一个合适的答案
  • 请取消这个答案。它可能会误导其他正在寻找正确解决方案的用户
【解决方案2】:

只有在触发设备就绪事件后才能访问 Cordova 插件代码,以确保成功加载 Cordova 和插件。

请查看sample code 以获得更好的理解。希望对您有所帮助。

更新:如果你想通过应用访问外部 URL,那么你必须使用 InAppBrowser 来实现它。

【讨论】:

    【解决方案3】:

    我想我找到了答案。诀窍是保持在设备上的应用程序范围内,并从远程服务器加载所有 javascript。在像 Angular 这样的 SPA 应用程序中,只有应用程序的引导程序 index.html 是必需的,没有别的。所有.js 文件都可以被引用,并且应用程序将自行“自动更新”。

    【讨论】:

    • 运行外部url mydomain.com 例如可以访问设备功能
    • 你可以使用 inappbrowser 我猜的一样,仍然使用设备功能
    • 好吧,它显然根本不起作用,window.nagiator.store 在我从控制台访问它时存在,但不是从应用程序。我不太明白 :( 而来自控制台和应用程序的window.navigator 是两个不同的对象......
    • 显然我试图实现的目标似乎没有得到官方支持:cordova.apache.org/docs/en/latest/guide/next/…。所以我想我必须重新考虑整个方法:)
    • 您是否阅读了整个链接。正如我建议的那样,它确实提到了应用内浏览器
    猜你喜欢
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2014-05-07
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多