2011-10-12 32 views
5

Tôi đang gặp sự cố thực sự với PhoneGap trong iPhone với các sự kiện. Các ứng dụng đang chạy khá trơn tru trong thiết bị Android của tôi, nhưng trên iPhone của tôi nó không phải bất cứ điều gì. Ví dụ: một mã đơn giản như sau:Sự kiện Phonegap không hoạt động trong 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()"> 

(đây là ví dụ mã không hoạt động với iPhone và hoạt động với Android).

Tôi nghĩ rằng đó là vấn đề với các sự kiện, nhưng tôi không chắc chắn. Ngay cả các ví dụ mã trong tài liệu PhoneGap cũng không hoạt động. môi trường của tôi là:

  1. Mac OSX 10.7.1
  2. Xcode 4.1
  3. PhoneGap 1.1
  4. jQuery Mobile 1.0RC Điều duy nhất mà nó cho thấy tôi là thế này: http://cl.ly/0h462Y2D2F0J0B1B0q1M

Cảm ơn trước.
Kính trọng,
Elkas


Bằng cách này, tôi đã cài đặt OSX Lion 10.7.2 và Xcode 4.2 bây giờ. Ngay cả trong IOS5 nó không hoạt động. Điều này khiến tôi điên mất!!! Ngay cả với mã đơn giản này không hoạt động.

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

Mọi thứ đều ổn, hãy thử ghi lại nội dung bằng cách sử dụng alert() để tìm hiểu vị trí không thành công. – sciritai

+0

Cũng thử điều đó. nếu tôi đặt onload = "onDeviceReady()" trong thẻ body hoặc một chức năng khác, nó sẽ hiển thị cảnh báo nhưng các sự kiện "phonegap" vẫn không hoạt động. = ( – Elkas

+0

jQuery mobile sẽ được thêm * sau * tập lệnh tùy chỉnh. – Walf

Trả lời

1

Sự cố được giải quyết !!

Tôi chạy ứng dụng mà không có phonegap.js và nó đã tạo cho tôi một ứng dụng mới. Tôi chỉ thay đổi tên của nó thành cái tôi đang tải và ứng dụng cuối cùng cũng hoạt động.

+0

Đây là một điểm tuyệt vời, có cùng một vấn đề và không thể tìm ra những gì đang diễn ra. nó thực sự không rõ ràng các phonegap.js được tạo ra cho mỗi nền tảng, bạn nên làm sạch các câu hỏi để làm cho nó dễ dàng hơn những gì vấn đề của bạn được. – zode64

+0

Rõ ràng nếu bạn thực sự tìm trong các thư mục cho nền tảng mục tiêu của bạn tải xuống điện thoại. Bạn phải đặt 'phonegap.js' cụ thể nền tảng (hoặc gần đây hơn' cordova.js') vào thư mục 'asset/www /' của bạn và tốt hơn nên đưa nó vào trước. – Walf

0

Sắp xếp của một đoán hoang dã ở đây, không chắc chắn làm thế nào bạn biên dịch điều này thành một ứng dụng nhưng bạn liệt kê XCode vậy .... Những điểm đánh dấu vào các file script trong thư mục jquery/và javascript /. Khi biên dịch một ứng dụng với các tệp XCode không được đặt trong các thư mục thực sự đại diện cho các thư mục nhóm mà bạn thường sử dụng. Để các tệp thực sự kết thúc trong một thư mục bên trong ứng dụng, bạn cần phải thêm thư mục trên đĩa cứng của bạn làm tham chiếu thư mục (chúng hiển thị dưới dạng thư mục màu xanh, không phải màu vàng).

Cách dễ nhất để kiểm tra xem đây có phải là vấn đề hay không là chỉ cần xóa đường dẫn thư mục của tập lệnh bao gồm chỉ là tên của tệp.

+0

Tôi biết bạn đời =) Tôi đã làm điều đó. Sao chép và tham khảo thư mục. Đây là một màn hình. http://cl.ly/2C243v0U2a0V062f2B0y – Elkas

1

thử đặt trình lắng nghe phụ thuộc vào tài liệu.đọc như thế này .. làm việc cho tôi cho cùng một vấn đề.

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

},false); 
}); 
+0

ok. Hãy để tôi thử nó và tôi sẽ cung cấp cho bạn một câu trả lời ngay khi tôi ở văn phòng. Cảm ơn vi đa trả lơi. – Elkas

+0

Vẫn không hoạt động .... Chết tiệt ... điều này khiến tôi phát điên! : P – Elkas

+0

ok, chờ đã, sẽ thấy thiết lập của tôi và cho bạn biết ngay khi im trong văn phòng tomo. :) – ghostCoder

1

Khi tạo cài đặt Phonegap cho iOS, phiên bản cụ thể của (ví dụ) phonegap.1.4.1.js được sử dụng.

Chỉ thay thế tệp này bằng phiên bản mới hơn (như cordova.1.8.0.js) dẫn đến cảnh báo không hoạt động.

Nếu bạn muốn nâng cấp lên phiên bản Phonegap mới hơn, bạn sẽ phải "làm lại" dự án của mình.

Tôi hoàn nguyên về phonegap.1.4.1.js và các sự kiện kỳ ​​diệu bắt đầu hoạt động trở lại.

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

Trong khi đoạn mã này có thể giải quyết được câu hỏi, [bao gồm cả giải thích] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. –

Các vấn đề liên quan