Javascript deviceReady不在PhoneGap应用程序中工作,如何?
我有一个简单的PhoneGap应用程序作为fallows:Javascript deviceReady不在PhoneGap应用程序中工作,如何?,javascript,jquery,android,cordova,Javascript,Jquery,Android,Cordova,我有一个简单的PhoneGap应用程序作为fallows: <!DOCTYPE HTML> <html> <head> <title>PhoneGap powered App</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesh
<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap powered App</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
<script type="text/javascript" charset="utf-8" src="phonegap-1.3.0.js"></script>
<script src="js/jquery-1.7.1.min.js"></script>
<script src="js/jquery.mobile-1.0.min.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, true);
function onDeviceReady() {
alert ('123');
}
</script>
</head>
<body onload="onDeviceReady()">
<div data-role="page">
<div data-role="header">
<h1>title</h1>
</div><!-- /header -->
<div data-role="content">
<h2>Begin by inserting your credentials.</h2>
...
</div><!-- /content -->
</div><!-- /page -->
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
});
</script>
</body>
</html>
PhoneGap应用程序
文件。添加的监听器(“deviceready”,onDeviceReady,true);
函数ondevicerady(){
警报(“123”);
}
标题
首先插入您的凭据。
...
$(文档).ready(函数(){
});
这里发生的是警报alert('123')代码>永远不会被解雇。但是如果我去掉其他JavaScript代码,只留下警报,它就会被触发
另外,如果我使用$(document).ready(函数(){alert('123');}
我会得到警报
这里发生了什么,为什么devicerady
没有被解雇
有什么想法吗?这样试试:
document.addEventListener("deviceready", function(){
alert("123");
},true);
@GPRathour提供的功能之所以有效,是因为document.addEventListener()
正在侦听deviceready
,如果为true,则运行您的警报功能。我没有按照您的方式使用它,原因有二:
1) 当DOM加载并转到您的body标记时,它正在调用OnDeviceReady(),而侦听器从未收到该调用,因此phonegap不知道它已准备好运行
2) 您必须从函数中调用侦听器并使用“false”:
function init(){
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady(){
alert('123');
}
<body onload="onDeviceReady()"></body>
函数init(){
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
}
函数ondevicerady(){
警报(“123”);
}
查看phonegap API,了解为什么在监听器中使用false而不是true,这与默认设置有关,但了解phonegap监听器如何工作是值得的。在定义处理程序之前,您正在将处理程序绑定到deviceready
正确答案是:
function onDeviceReady(){
alert('123')
}
document.addEventListener("deviceready", onDeviceReady, false);
显然,在此之前,您的phonegap-2.0.0.js文件(或其他版本)应该包含在该文件中。在一个或多个平台上未触发ondeviceready事件的主要原因,是当您尝试使用错误平台的cordova/phonegap js时。当将phonegap 3.0与WP8一起使用时,设备就绪将无法工作,因为Visual Studio解决方案中不包括phonegap.js
目前的解决方案是手动将其包括在内。将deviceready事件监听器添加到doc ready中
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
document.addEventListener("deviceready", onDeviceReady, true);
});
function onDeviceReady() {
alert ('123');
}
</script>
$(文档).ready(函数(){
文件。添加的监听器(“deviceready”,onDeviceReady,true);
});
函数ondevicerady(){
警报(“123”);
}
您不想调用OnDevicerady(),因为在添加侦听器时,这将运行函数…检查您在项目中添加的Cordova/phonegap库/jar文件的版本(在libs下)以及您在HTML文件中引用的