0

我有一个可以想象的最简单的 PhoneGap 应用程序!

我要做的就是在 deviceready 事件上显示一条警报消息。

代码

<!DOCTYPE HTML>
<html>
<head>
    <title>PhoneGap</title>
    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
    <script type="text/javascript" charset="utf-8" src="common.js"></script>
</head>
<body>
    <div data-role="page" id="index-page">
        <h1>Hello World!</h1>
</body>
</html> 

common.js 代码

var isPhoneGapReady = false;
function init() {

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

        // Older versions of Blackberry < 5.0 don't support 
        // PhoneGap's custom events, so instead we need to 
        // perform an interval check every 500 milliseconds 
        // to see if PhoneGap is ready.  Once done, the 
        // interval will be cleared and normal processing
        // can begin
        var intervalID = window.setInterval(function() {
              if (PhoneGap.available) {
                  onDeviceReady();
              }
          }, 500);
  }

function onDeviceReady() {
    window.clearInterval(intervalID);

    // set to true
    isPhoneGapReady = true;
alert("The device is now ready");
}

// Set an onload handler to call the init function
window.onload = init;

我正在使用云服务来获取 APK 文件,并在 Android 模拟器 4.0.3 版中运行它。

控制台上的错误:

init
Ignote this event
W/webcore(6387): java.lang.Throwable: EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up.
at android.webkit.WebViewCore$EventHub.removeMessages(WebViewCore.java:1683)

如果有人能指出需要做什么来纠正错误,我将不胜感激。

谢谢,

4

1 回答 1

1

我认为您遇到的问题是您intervalID的 ' 范围没有达到您的onDeviceReady()功能。您需要在函数中创建该init()函数,如下所示 -

var isPhoneGapReady = false;

function init() {

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

    // Older versions of Blackberry < 5.0 don't support 
    // PhoneGap's custom events, so instead we need to 
    // perform an interval check every 500 milliseconds 
    // to see if PhoneGap is ready.  Once done, the 
    // interval will be cleared and normal processing
    // can begin

    var intervalID = window.setInterval(function() {
          if (PhoneGap.available) {
              onDeviceReady();
          }
      }, 500);

        // REMOVE THIS
        // }

    function onDeviceReady() {
        window.clearInterval(intervalID);

        // set to true
        isPhoneGapReady = true;
    alert("The device is now ready");
    }

// PUT THIS HERE
}

// Set an onload handler to call the init function
window.onload = init;
于 2012-06-20T23:32:54.243 回答