2011-10-12 28 views
5

我在iPhone上遇到了与PhoneGap有关的事件真正的麻烦。该应用在我的Android设备上运行非常流畅,但在我的iPhone上它什么也没有。例如,一个简单的代码是这样的:Phonegap不能在iphone中工作

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" /> 
    <meta charset="utf-8"> 
    <title>WayAcross Mobile Application</title> 
    <link rel="stylesheet" href="css/jquery.css" /> 
    <link rel="stylesheet" href="css/screen.css" /> 
    <link rel="stylesheet" href="css/login.css" />  
    <script type="text/javascript" charset="utf-8" src="jquery/jquery.js"></script> 
    <script type="text/javascript" charset="utf-8" src="jquery/jquery.mobile.js"></script> 
    <script type="text/javascript" charset="UTF-8" src="javascript/mainJavascript.js"></script> 
     <script type="text/javascript" charset="utf-8"> 

      // Call onDeviceReady when PhoneGap is loaded. 
      // 
      // At this point, the document has loaded but phonegap.js has not. 
      // When PhoneGap is loaded and talking with the native device, 
      // it will call the event `deviceready`. 
      // 
      function onLoad(){ 
       document.addEventListener("deviceready", onDeviceReady, false); 
      } 

      // PhoneGap is loaded and it is now safe to make calls PhoneGap methods 
      // 
      function onDeviceReady() { 
       // Now safe to use the PhoneGap API 
       alert('ready'); 
      } 

      </script> 
     <script type="text/javascript" charset="utf-8" src="javascript/phonegap.js"></script> 
</head> 
<body onload="onLoad()"> 

(这是一个代码示例,不与iPhone合作,并与Android版)。

我认为它是一个事件的问题,但我不确定。即使PhoneGap文档中的代码示例也不起作用。 我的环境是:

  1. 的Mac OSX 10.7.1
  2. 的Xcode 4.1
  3. 的PhoneGap 1.1
  4. jQuery Mobile的1.0RC ,它显示我的唯一的事情是这样的:http://cl.ly/0h462Y2D2F0J0B1B0q1M

在此先感谢。
问候,
Elkas


顺便说一句,我已经安装了OSX 10.7.2狮子和Xcode的4.2现在。即使在IOS5中它不起作用。这真让我抓狂!!! 即使这个简单的代码不起作用。

<!DOCTYPE html> 
<html> 
<head> 
    <title>PhoneGap Device Ready Example</title> 

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

     // Call onDeviceReady when PhoneGap is loaded. 
     // 
     // At this point, the document has loaded but phonegap.js has not. 
     // When PhoneGap is loaded and talking with the native device, 
     // it will call the event `deviceready`. 
     // 
     document.addEventListener("deviceready", onDeviceReady, false); 

     // PhoneGap is loaded and it is now safe to make calls PhoneGap methods 
     // 
     function onDeviceReady() { 
      alert('Hello World'); 
     } 

     </script> 
    <script type="text/javascript" charset="utf-8" src="javascript/phonegap.js"</script> 
</head> 
    <body> 
    </body> 
</html> 
+0

一切看起来都不错,尝试使用alert()找出它失败的地方。 – sciritai

+0

也试试。如果我在body标签或其他函数中放置了onload =“onDeviceReady()”,它将显示警报,但phonegap“events”仍然不起作用。 =( – Elkas

+0

jQuery mobile应该在*自定义脚本之后添加* – Walf

回答

1

问题解决了!

我跑不phonegap.js的应用程序,它造就了我一个新的。我只是把它的名字改成了我正在加载的那个,并且应用程序终于起作用了。

+0

这是一个伟大的地方,有同样的问题,并无法解决发生了什么事情。它并不是很明显,phonegap.js是每个平台生成的,你应该清理这个问题,以便更容易地解决你的问题。 – zode64

+0

这很明显,如果你真的看看你的目标平台的电话下载的目录。你应该把特定于平台的'phonegap.js'(或者最近的'cordova.js')放到你的'assets/www /'目录中,并且最好先包含它。 – Walf

0

排序胡乱猜测这里,不知道你是如何编译这个东西放在一个应用程序,但你在文件夹的jQuery /和JavaScript列出的XCode左右....的标记点,脚本文件/。使用XCode文件编译应用程序时,不会放置在表示您通常使用的组文件夹的实际文件夹中。为了使文件实际上在应用程序内的目录中结束,您需要将硬盘上的文件夹添加为文件夹引用(它们显示为蓝色文件夹,而不是黄色)。

最简单的方法来检查,如果是这样的问题,只是删除脚本的文件夹路径包括刚才是文件的名称。

+0

我知道队友=)我已经完成了。复制并引用文件夹。这是一个屏幕。 http://cl.ly/2C243v0U2a0V062f2B0y – Elkas

1

尝试把addevent监听器放在document.ready下面,就像这样..为我工作的同样的问题。

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

},false); 
}); 
+0

好的。让我尝试一下,我一到办公室就会给你一个答案。谢谢回复。 – Elkas

+0

仍然无法工作......该死......这让我疯狂! :P – Elkas

+0

好吧,等一下,会看到我的设置,并尽快告诉你在办公室tomo。 :) – ghostCoder

1

当创建的PhoneGap安装于iOS的(即)的特定版本phonegap.1.4.1.js被使用。

的新版本(如cordova.1.8.0.js)仅更换此文件导致警报无法正常工作。

如果要升级到新版本的PhoneGap你将不得不“重做”项目。

我恢复到phonegap.1.4.1.js和事件奇迹般地开始工作了。

0
function testDialog() { 
    document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() { 
     navigator.notification.alert("This is message", function(){}, "HaHa", "Done"); 
    } 
} 
+3

尽管此代码段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –