3

我想使用 phonegap Cordova 2.0 创建 iPhone 应用程序。现在i wrote Javascript external and HTML code。然后我把JavaScript code into the HTML5 file. 现在我想在网络浏览器上运行 HTML 文件。当我在浏览器中运行 HTML 时,Javascript 不起作用。浏览器显示 HTML 中的任何内容。所以你能帮我吗run the HTML5 file with JavaScript on the browser and in XCode Phonegap

下面的编码是 JavaScript 编码。

    

var bodyLoaded = function()
 {
    document.addEventListener("deviceready", onDeviceReady, false);
 }

    // Cordova is ready
    //
    function onDeviceReady() {
        var options = new ContactFindOptions();
        options.filter="";
        filter = ["displayName","organizations"];
        navigator.contacts.find(filter, onSuccess, onError, options);
    }

    // onSuccess: Get a snapshot of the current contacts
    //
    function onSuccess(contacts) {
        for (var i=0; i<contacts.length; i++) {
            for (var j=0; j<contacts[i].organizations.length; j++) {
                alert("Pref: " + contacts[i].organizations[j].pref + "\n" +
                        "Type: " + contacts[i].organizations[j].type + "\n" +
                        "Name: " + contacts[i].organizations[j].name + "\n" + 
                        "Department: "  + contacts[i].organizations[j].department + "\n" + 
                        "Title: "  + contacts[i].organizations[j].title);
            }
        }
    };

    // onError: Failed to get the contacts
    //
    function onError(contactError) {
        alert('onError!');
    }

下面的编码位于我的 HTML5

 <!DOCTYPE html>
<html>
  <head>
 <meta charset="utf-8" /> 

    <title>Contact Example</title>
    <script type="text/javascript" charset="utf-8" src="Contectscript.js"></script>
   
  </head>
  <body>
    <body onload='alert(1);'>
    <body onload='bodyLoaded();'>
    <h1>Example</h1>
    <p>Find Contacts</p>
  </body>
</html>

提前致谢。

4

2 回答 2

1

好的,所以您正在开发一个 PhoneGap 应用程序。

在PhoneGap 中有一个特殊的事件叫做“deviceready”,它在PhoneGap 完全加载时触发。

在此事件触发之前不要调用任何 PhoneGap 函数,这一点非常重要。功能可能尚未加载。

你的问题是:

  1. 您正在尝试在浏览器中测试 javascript。PhoneGap 提供从您的手机到您的应用程序的服务。由于您是从 Web 浏览器运行它,因此没有电话可以提供服务。您不能简单地在 Web 浏览器中运行您的应用程序。

  2. 您没有引用 phonegap.js。PhoneGap 有一个 javascript 部分,您的应用程序必须加载该部分才能工作。您应该在自己的脚本之前有一行<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>(当然文件名可能会因您使用的 phonegap 版本而异,它可以称为 cordova.js)。

  3. 您的 html 包含愚蠢的东西。有 3 个开口体标签。应该只有 1 个。您需要这样的 HTML:

    <!DOCTYPE html>
    <html>
      <head>
      <meta charset="utf-8" /> 
        <title>Contact Example</title>
        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
        <script type="text/javascript" charset="utf-8" src="Contectscript.js"></script>
      </head>
      <body onload="bodyLoaded();">
        <h1>Example</h1>
        <p>Find Contacts</p>
      </body>
    </html>
    

如何解决这些问题?

  1. 在 XCode 中开发。有一个内置的模拟器。它也为你做管道。无需您的外部网络浏览器。在您的问题中,您已经谈到了 XCode,所以这可能是一个不错的选择。阅读这篇关于在那里设置和运行项目的文章:http: //www.adobe.com/devnet/html5/articles/getting-started-with-phonegap-in-xcode-for-ios.html

  2. 使用波纹模拟器。它是一款专为在 google chrome 浏览器中模拟手机而设计的模拟器。它可以让您的应用程序相信它作为 PhoneGap 应用程序在您的手机中运行,并且您的手机的所有功能都可用,如加速度计、gps 等。它还为您模拟 deviceready 事件。:)

就像每个框架一样,研究文档是一个非常好的主意。有一个很好的入门指南,您可以找到有关 PhoneGap 的每个问题的答案。

请阅读并研究我为您提供的链接。它将帮助您了解您正在尝试做什么。

于 2012-09-06T07:15:42.480 回答
1

首先,尝试:

<body onload='alert(1);' ...>

是否反应正确。然后继续:

var bodyLoaded = function() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

<body onload='bodyLoaded();'>
于 2012-09-05T10:40:56.410 回答