1

我正在为Android和iOS开发混合应用程序。这不是我的第一个应用程序,但我并不认为自己是专家。目前我的目标是Android 4.4或更高版本。对于iOS我有一个iPhone 4S测试,不支持iOS 9.2以下的任何东西。为了使这个应用程序,我目前使用Phonegap Build,它输出版本= cli-5.2.0和使用jQuery Mobile 1.4.5作为框架来处理用户界面,导航等。 Javascript正在本地加载 - 来自设备。jquery移动加载器不能在android上工作

考虑到一些服务器交互需要一些时间来加载,我想在服务器交互过程中显示加载gif。对于这个问题,我正在使用jQuery Mobile的loader小部件。对于Ajax请求调用的代码具有下面的代码:

$.serviceCall = function(web_method, web_root, params){ 

    var ajax_response; 
    var request_url = 'http:/some.url.com/' + web_root + '/' + web_method; 

    $.mobile.loading("show", { 
     text: "loading", 
     textVisible: false, 
     theme: "z", 
     html: "" 
    }); 

    $.ajax({ 
     type: 'get', 
     contentType: 'application/json; charset=utf-8', 
     async: false, 
     dataType: 'json', 
     url: request_url, 
     data: params, 
    }).done(function(data){ 
     ajax_response = data 
     ajax_response.callback = 'done'; 
     $.mobile.loading("hide"); 
    }).fail(function(jqXHR, textStatus, errorThrown){ 
     var failure_details = { 
      status: jqXHR.status, 
      text_status: textStatus, 
      error_thrown: errorThrown 
     }; 
     ajax_response = failure_details; 
     ajax_response.callback = 'fail'; 
    $.mobile.loading("hide"); 
    }); 

    return ajax_response; 
}; 

从桌面浏览器或波纹仿真器访问来模拟实际device.Once请求开始,装载机显示了当这工作完全正常,如隐藏一旦请求结束并进行页面转换。

但是,在android上不起作用。每当请求开始时,无论请求需要多长时间,加载器都不会显示出来。移动操作系统有什么窍门,我需要申请才能使其工作?

+0

请在您的帖子**中回答以下问题。因为这似乎是你在这个问题上的第一篇文章。这是你的第一个混合应用程序?你在使用桌面应用程序吗?你的目标平台和目标版本是什么:Android 4,5,6? iOS 7,8,9?您是否在使用[CLI,SDK或Build](https://github.com/jessemonroy650/top-phonegap-mistakes/blob/master/new-to-Phonegap.md#001)?请不要假设答案,请阅读链接。一旦你在帖子*中回答问题*,回复评论,所以我知道你已经添加了信息到帖子。 – JesseMonroy650

+0

@ JesseMonroy650对不起,我完全失去了你的评论!我用你问的问题更新了问题信息,如果你需要任何附加信息,请告诉我,谢谢! –

+0

您使用* DESKTOP应用程序*?你使用的是什么框架:Angular,Express,Ember? – JesseMonroy650

回答

0

检查此guide如何检查应用程序。

我建议您取出$.mobile.loading("hide");,这样您可以让加载程序运行以查看发生了什么。可能是z-index问题或console中的错误

+0

所以我做了这个,我发现了两件有趣的事情:首先,加载器在Android中出现的时间稍长一些,然后在桌面环境中出现,第二:即使没有'$ .mobile.loading('hide')'装载程序消失的页面之间的转换是在它可以显示装载程序之前发生的转换?那么如何防止呢? –

+0

@Juan Carlos Alpizar Chinchilla - 不知道为什么有延迟,尝试移动Firefox浏览器,看看是否更快 - 你可以添加一个或两个左右的超时隐藏加载程序 - 例如(setTimeout(function(){ $ .mobile.loading(“hide”); },2000);)所以至少你看到了它 - 不确定你有其他问题,但听起来像浏览器问题,而不是JQM - 我从来没有使用过inbuild加载程序,我不喜欢它自己,而是我用旋转js - http://fgnass.github.io/spin.js/ – Tasos

+0

问题是加载程序一旦页面过渡开始就消失了,我会深入研究页面转换事件,看看我能否更快地展示它。另一方面,我不知道旋转,我会给它一个尝试:) –

0

您犯了一个常见错误。您需要应用whitelist系统。需要截至Cordova Tools 5.0.0(2015年4月21日)。对于的PhoneGap构建,这意味着自cli-5.1.1(2015年6月16日)

添加到您的​​3210

<plugin name="cordova-plugin-whitelist"  source="npm" spec="1.1.0" /> 
<allow-navigation href="*" /> 
<allow-intent href="*" /> 
<access origin="*" /> <!-- Required for iOS9 --> 

记下您的应用现已不安全。它是由你来保护你的APP。
以下添加到您的index.html

<meta http-equiv="Content-Security-Policy" 
     content="default-src *; 
        style-src * 'self' 'unsafe-inline' 'unsafe-eval'; 
        script-src * 'self' 'unsafe-inline' 'unsafe-eval';"> 

白名单工作应该有所帮助。
HOW TO apply the Cordova/Phonegap the whitelist system

如果不是这样,那么可能会出现我可能不熟悉的JQuery Mobile设置。

+0

我当然有whiltelist插件工作,但我的配置现在是非常不同的,你已经建议。我会在几个小时内查看它,因为它现在是凌晨1点50分在这里:p –

+1

我怀疑你的index.html中有Javascript。在这种情况下,您需要CSP(内容安全策略)。 – JesseMonroy650

相关问题