jQuery移动活动指示器未显示在android中

时间:2012-11-22 09:50:02

标签: javascript android cordova jquery-mobile

我尝试在我的应用程序中显示活动指示器。我正在使用activity.js作为活动指标。那个在浏览器和iPhone上运行良好但它在Android设备中不起作用。

我不知道为什么指示器在Android设备中不起作用。

以下是我的活动指标示例代码:

function showIndicator() {
    console.log("inside show indicator");
    applyOverLay();
    var showIndicator = document.createElement("div");
    showIndicator.setAttribute("class", "activity-indicator");
    document.body.appendChild(showIndicator);
    $('.activity-indicator').activity({
        width: 5,
        space: 1,
        length: 3,
        color: '#fff'
    });
}

function applyOverLay() {
    var overlay = document.createElement("div");
    overlay.setAttribute("id", "overlayAttr");
    overlay.setAttribute("class", "overlay");
    document.body.appendChild(overlay);
}

function hideindicator() {
    $('.activity-indicator').activity(false);
    setTimeout(function() { $(".activity-indicator").empty().remove(); }, 0);
    setTimeout(function() { $(".overlay").empty().remove(); }, 0);
}

function loadhtmlpage() {   
    //location.href='#refillReminder';
    $.mobile.changePage("#refillReminder"); 
    showIndicator();
    hideindicator();
}

style.css:

.activity-indicator {
    padding: 10px;
    position: absolute;
    top: 50%;
    left: 45%;
    z-index: 1001;
}

5 个答案:

答案 0 :(得分:1)

我使用以下代码在Android上显示本机活动指示器..这可能有帮助..

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    $(document).bind("ajaxSend", function() {
        navigator.notification.activityStart("App Name","Loading...");
     }).bind("ajaxStop", function() {
        navigator.notification.activityStop();
    }).bind("ajaxError", function() {
        navigator.notification.activityStop();
     });    

}

答案 1 :(得分:1)

也许您应该尝试在 loadhtmlpage 方法中显示指标,并在 #refillReminder jquery页面中的 pageshow 方法中添加处理程序把它关掉。

我已经使用了jQuery Mobile默认指示器,并尝试在ajax调用之类的长操作之前在同一页面中显示,并将其隐藏在always处理程序中。

使用0超时显示它后,你试图隐藏它也很奇怪。

答案 2 :(得分:1)

您可以使用默认的jquery移动活动指标作为后备,使用:

$.mobile.loading('hide'); //to hide the spinner
$.mobile.loading('show'); //to show the spinner

该组件非常灵活,您可以使用主题或覆盖旋转的gif。

此处有更多信息Jquery Mobile Loader

答案 3 :(得分:1)

答案 4 :(得分:1)

在创建元素并使用javascript设置样式时,Android浏览器与桌面浏览器相比略慢。所以对于你的情况,指标可能需要花时间在Android浏览器加载,但由于我提到的问题,请求已经在那段时间内完成,指标没有机会出现,尝试使用CSS样式,添加/删除类,并尽可能避免使用JavaScript的内联CSS样式。 对于Activity加载器尝试这样的事情:

http://jsbin.com/oPIyuqUk/1/edit?html,css,js,output

或者在这里尝试Jquery移动加载器:

http://demos.jquerymobile.com/1.2.1/docs/pages/loader.html