deviceReady不能在PhoneGap应用程序中工作,如何?

我有一个简单的PhoneGap应用程序作为休闲:

<!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> 

这里发生的是警报alert ('123'); 永远不会被解雇。 但是,如果我拿出其他的JavaScript代码,只留下警报被解雇。

另外如果我使用$(document).ready(function () { alert ('123'); }我得到警报。

这里发生了什么,为什么deviceready没有被解雇呢?

有任何想法吗?

Solutions Collecting From Web of "deviceReady不能在PhoneGap应用程序中工作,如何?"

试试这个方法:

  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> 

检查phonegap API为什么在您的侦听器中使用false而不是true,与默认设置有关,但值得一读的是了解phonegap listeners的工作原理。

以防万一您遇到同样的问题,我不知道是否需要在您的index.html中包含cordova.js脚本,您不必提供文件或引用,只需包含以下行:

 <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 

然后cordova将在编译时使用该库,之后该事件被发送。

这个代码适合我

 <body onload="init()"></body> function init() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady() { // Now safe to use the Cordova API } 

快乐编码…….

当使用PhoneGap 3.0WP8时, Device Ready将无法工作,因为Phonegap.js不包含在Visual Studio解决scheme中。

解决scheme是现在手动包含它。

在一个或多个平台上发生ondeviceready事件的主要原因是当您尝试使用错误的平台的cordova / phonegap js时。

添加你的设备在你的文档准备好的事件监听器…

 <script type="text/javascript" charset="utf-8"> $(document).ready(function () { document.addEventListener("deviceready", onDeviceReady, true); }); function onDeviceReady() { alert ('123'); } </script> 

你不想调用onDeviceReady(),因为当你添加监听器的时候,它会运行这个函数。

检查你已经添加的项目(在libs下)和你引用的<script src =“〜/ Scripts / cordova-3.0.0.js”/>脚本的Cordova / phonegap库/ jar文件的版本HTML文件。 如果不匹配,<script />可能无法在项目中引用它。 所以Cordova无法执行它的function。

在我的情况下,我需要删除meta http-equiv =“Content-Security-Policy”content =“…

确保下面的path是正确的,并且都需要被包含到html中:

  <script type="text/javascript" src="cordova.js"></script> <script src="js/jquery-1.11.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ document.addEventListener("deviceready", onDeviceReady, false); }); function onDeviceReady() { alert("inside onDeviceReady"); } </script> 

在定义处理程序之前,您已经将一个处理程序绑定到了deviceready。

正确的是:

 function onDeviceReady(){ alert('123') } document.addEventListener("deviceready", onDeviceReady, false); 

显然你的phonegap-2.0.0.js文件(或其他版本)应该包含在文件之前的这一点。

PhoneGap示例的最大问题是JavaScript语法不正确。 请小心这个..对于这个问题,onDeviceReady应该有大括号…

 document.addEventListener("deviceready", onDeviceReady(), true); function onDeviceReady() { alert ('123'); }