[英]PhoneGap onDeviceReady not firing
我是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");
}
}
確保您針對的平台具有正確的cordova.js版本。 另外,您使用的是哪個版本的Phonegap?
請嘗試刪除超贊的字體(如果包含)。 他們的css文件存在一些兼容性問題。
<link rel="stylesheet" href="css/font-awesome.min.css" />
我曾經遇到過同樣的問題,並在我從代碼中刪除了以上代碼后解決了該問題,
<!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>
我認為這是您需要做的:
$(document).ready(function(){
document.addEventListener("deviceready", onDeviceReady, false);
}
因為當您的設備准備就緒時,觸發器尚未加載jQuery-這將確保您執行以下操作:1.獲取jQuery 2.觸發PhoneGap deviceready
同時刪除您的onLoad()
函數! :)
它正在我的波紋模擬器上運行。 但是我使用jquery-1.9.1.js
和cordova 2.7
嗎?
首先,您需要在模擬器/移動設備中而不是在Web瀏覽器中將其作為應用程序進行測試。 其次,如果您要使用地理位置,則可以這樣使用
function onDeviceReady() {
console.log("we are an app");
MyApp.initialize_phonegap();
}
function onBodyLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
</script>
</head>
<body onload="onBodyLoad()">
我正在使用由iOS開發人員的同事共享的cordova.js。 我用Cordova網站上的最新cordova.js替換了它,它開始運行良好。
使用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錯誤而失敗。
您可以簡單地將上面的行替換為
if (id=="deviceready")
{
console.log("addEventListener for backbutton");
$("#texttest").css("display", "none");
// ... whatever
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.