适用于 Android 的 JQuery Mobile + PhoneGap - 加载 index.html 时出错

Posted

技术标签:

【中文标题】适用于 Android 的 JQuery Mobile + PhoneGap - 加载 index.html 时出错【英文标题】:JQuery Mobile + PhoneGap for Android - Error loading index.html 【发布时间】:2011-07-01 07:25:28 【问题描述】:

我正在尝试为 Android 平台 2.2 运行基本的 PhoneGap + JQuery Mobile 程序,但我收到应用程序错误“与服务器的连接不成功(file:///android_asset/www/index.html)”当我尝试在 Windows XP 上的 Android Emulator 平台 2.2 中使用 Eclipse 3.7 运行应用程序时,在 Android 模拟器中强>。

如果我从 HTML 文件中删除了 JQuery Mobile 的所有引用和语法,则文件会加载,所以我确信我的项目很好,但是我在初始化 JQuery Mobile 时缺少一些东西。我将 PhoneGap 0.9.6JQuery Mobile 版本 *1.0b1*JQuery 版本 1.6.1 一起使用(我还尝试使用带有 JQuery 1.4.4 的 JQM 版本 1.0a2,但出现相同的错误)。

如果我从我的 HTML 文件中删除所有对 JQuery Mobile 的引用,那么我就可以在模拟器中加载程序而不会出错。

我查看了网络上的几个示例并按原样进行了尝试,但所有示例都显示相同的错误。我的文件如下:

<!DOCTYPE HTML>
<html>
  <head>
    <meta name="viewport" content="width=320; user-scalable=no" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>PhoneGap With JQM</title>
      <link rel="stylesheet" href="jquery.mobile-1.0b1.min.css" type="text/css" charset="utf-8" />
        <script src="jquery-1.6.1.min.js"></script>
          <script type="text/javascript" charset="utf-8" src="phonegap.0.9.6.js"></script>
          <script type="text/javascript" charset="utf-8" src="main.js"></script>  
          <script src="jquery.mobile-1.0b1.min.js"></script>

  </head>
  <body onload="init();">
    <div data-role="page" data-theme="e">
        <div data-role="header">
            <h1>PhoneGap with JQM</h1> 
        </div>
        <div data-role="content">
            <h1>My Content</h1>  
        </div>
        <div data-role="footer">
            <h1>My Footer</h1>  
        </div>
  </body>
</html>

main.js 文件只有:

function init()
   
    document.addEventListener("deviceready", deviceInfo, true);             
       

我错过了什么?

【问题讨论】:

index.html文件如下: 我的问题得到了解决(感谢 PhoneGap Google Groups 上的 Viras)。出现问题的原因是 Android 模拟器真的很慢,因此在加载文件时会发生超时,因为它的反应太慢了。在调用 super.loadUrl 之前在自定义 Activity 文件中添加以下行: super.setIntegerProperty("loadUrlTimeoutValue", 60000); 请回答您的问题,如果您的问题解决了,请关闭它,我只是浪费了我生命中的 2 分钟! 【参考方案1】:

问题可能是模拟器速度太慢导致网络太慢,及时完成通信。

通过将以下属性添加到 src/com/phonegap/xxx.java,在 PhoneGap 中设置 60 秒超时:

super.setIntegerProperty("loadUrlTimeoutValue", 60000); 

参考资料:

phonegap 0.9.3 onReceivedError: Error code=-6 Description=The connection to the server was unsuccessful

http://The%20connection%20To%20The%20Server%20Was%20Unsuccessful%20-%20Android%202.2,%20jquerymobile,%200.9.5.1

【讨论】:

【参考方案2】:

上述解决方案适用于基于 java 的代码。但是 OP 适用于 javascript/jqueryphonegap。以下内容帮助我解决了这个问题。

config.xml 中,添加:

<preference name="splash-screen-duration" value="25000" /> 
<!-- Increase the value until the error is solved-->

这里真正的问题是PhoneGap 的初始页面加载超时为20 秒。如果您的页面花费的时间超过该时间,您会收到此消息。

Application Error - The connection to the server was unsuccessful.   
(file:///android_asset/www/index.html)

【讨论】:

以上是关于适用于 Android 的 JQuery Mobile + PhoneGap - 加载 index.html 时出错的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Mobile适用于浏览器,但不适用于手机

Jquery mobile getJSON 适用于浏览器但不适用于移动设备

覆盖 Android Backbutton 行为仅适用于具有 PhoneGap 的第一页

部分视图部分适用于 JQuery,但不完全适用于 C# ASP.Net MVC 5

Jquery $.Post 适用于 Firefox 但不适用于 Chrome

Jquery 动画仅适用于一个元素