【问题标题】:deviceready won't fire in Phonegap 1.0.0 on Androiddeviceready 不会在 Android 上的 Phonegap 1.0.0 中触发
【发布时间】:2011-08-23 20:10:44
【问题描述】:

我尝试在 Android 上设置 Phonegap,deviceready 不会触发。原因是DeviceInfo.uuid 始终为空/未定义。

似乎phonegap 的非javascript 部分没有正确加载,但我看不出具体是什么。对于 www 目录之外的所有内容,我使用的是 phonegap 下载示例目录中提供的代码。

有人知道是什么原因造成的吗?

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">

      <script type="text/javascript" charset="utf-8" src="javascripts/phonegap-1.0.0.js"></script>
    <script src="http://debug.phonegap.com/target/target-script-min.js#something"></script>

    <script type="text/javascript" charset="utf-8">

    function onBodyLoad() {
      var initialize = function() {
        window.console.log("deviceready||resume");
      };
      document.addEventListener("deviceready", initialize);
      document.addEventListener("resume", initialize);
      window.console.log("onBodyLoad!");
    }

    </script>
  </head>
  <body onload="onBodyLoad()">
  <h1>Herro World</h1>
  </body>
</html>

【问题讨论】:

    标签: android cordova


    【解决方案1】:

    以防其他人偶然发现这个问题。

    我没有意识到 iPhone 和 Android 版本的 phonegap-1.0.0.js 是不同的。名称相同,但内容不同。因此,必须加载正确的文件。我是这样解决的:

    <script type="text/javascript">
        // Atrocious way of loading two diffent phonegap scripts, but other loading methods won't work.
        // also there shouldn't be two scripts to begin with -- so much for cross-platform.
        var userAgent = navigator.userAgent.toLowerCase();
        if (userAgent.match(/android/)) {
        document.write("<script type='text/javascript' src='javascripts\/phonegap-android-1.0.0.js'><\/script>");
      } else {
        document.write("<script type='text/javascript' src='javascripts\/phonegap-iphone-1.0.0.js'><\/script>");
      }
    </script>
    

    【讨论】:

    • 男人!你救了我的命。这简直要了我的命,我只是想放弃它。
    • 感谢您的信息,我也没有意识到这一点。但是我不会动态地决定(可能仅在开发过程中)我可以在构建过程中做什么。使用正确的版本编译性能更好。
    【解决方案2】:

    如果您希望在设备准备就绪时执行某些功能,请执行以下操作

    document.addEventListener("deviceready", onDeviceReady, true);
    // PhoneGap is now ready
    
    function onDeviceReady() {
    // Write your code here
    }
    

    我不确定您的代码为什么不起作用。请尝试将 document.addEventListener 放在函数范围之外。

    【讨论】:

    • 谢谢,这通常可以解决问题(我赞成)!就我而言,我确实有一个听众,但我没有意识到 phonegap-1.0.0.js 对于 iPhone 和 Android 版本是不同的。这不是同一个文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    相关资源
    最近更新 更多