PhoneGap onDeviceReady没有开火

时间:2013-10-15 13:17:28

标签: javascript android cordova

我是phonegap的新手,所以我只是尝试了一些东西,并从onDeviceReady方法开始。我遇到的问题是,该方法不会触发。

这是我的完整代码,非常基本。

<!DOCTYPE html>
<html>
  <head>
    <title>Splashscreen Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8" src="js/jquery-2.0.3.min.js"></script>

    <script type="text/javascript" charset="utf-8">
    document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    $("#texttest").css("display", "none");
}
</script>
  </head>
  <body>
  <div id="texttest" style="display:block">text</div>
  </body>
</html>

现在,当应用程序启动时,文本应该隐藏吗?好吧,整个div应该,但设备仍然显示“文本”。我在那里做错了什么?我还尝试了一些其他基本方法,如

$("#texttest").hide()

但这也不起作用。这是MainActivity.java

    package de.activevaluetenthousandfliesphonegap;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import org.apache.cordova.*;

public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.loadUrl("file:///android_asset/www/index.html");
}

}

8 个答案:

答案 0 :(得分:2)

确保您拥有正在使用的平台的正确版本的cordova.js。 您还在使用什么版本的Phonegap?

答案 1 :(得分:0)

<!DOCTYPE html>
<html>
<head>
<title>Splashscreen Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery-2.0.3.min.js"></script>

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


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


function onDeviceReady() {
    $("#texttest").css("display", "none");
}

</script>
</head>
<body onload="onLoad()">
       <div id="texttest" style="display:block">text</div>
</body>
</html>

答案 2 :(得分:0)

以下是我认为您需要做的事情:

        $(document).ready(function(){
document.addEventListener("deviceready", onDeviceReady, false);

    }

因为当你的设备准备好触发jQuery没有加载时 - 这将确保你执行以下操作: 1.获取jQuery 2.触发PhoneGap设备

同时删除onLoad()功能! :)

答案 3 :(得分:0)

它正在我的涟漪仿真器上工作。但我使用jquery-1.9.1.jscordova 2.7

答案 4 :(得分:0)

首先,您需要在模拟器/移动设备中将其作为应用程序进行测试,而不是在Web浏览器上进行测试。其次,如果你想使用地理位置,你可以像这样使用它

function onDeviceReady() {
        console.log("we are an app");
        MyApp.initialize_phonegap();
      }

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

    </script>

  </head>

  <body onload="onBodyLoad()">

答案 5 :(得分:0)

我使用的是我的同事,他是iOS开发人员共享的cordova.js。我用来自Cordova网站的最新cordova.js替换了它,它开始运作得很好。

答案 6 :(得分:0)

如果包含,请尝试删除font-awesome。它们与css文件有一些相容的问题。

<link rel="stylesheet" href="css/font-awesome.min.css" />

我遇到了同样的问题,当我从我的代码中删除上面一行时解决了这个问题,

答案 7 :(得分:0)

使用cordova创建应用后,index.js(或build.js)包含类似

的内容
var parentElement = document.getElementById(id);
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');

listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');

在默认事件处理函数“receivedEvent”中。

这些线只适用于Cordova的Hello-World-Dummy。一旦你替换index.html的内容“parentElement”将是未定义的。这会导致javascript错误

Uncaught TypeError: Cannot read property 'querySelector' of null
at Object.receivedEvent (index.js:37)
at Object.onDeviceReady (index.js:31)
at Channel.fire (cordova.js:846)
at cordova.js:231

cordova Hello-World的index.html包含一个容器

<div id="deviceready" class="blink">

一旦你删除它,应用程序的构建就会失败,并提到了JavaScript-Error。

您可以简单地用

之类的内容替换上面的行
if (id=="deviceready")
{
    console.log("addEventListener for backbutton");
    $("#texttest").css("display", "none");
    // ... whatever
}