1

我正在使用带骨干的 jQuery mobile

我已禁用 jquery 移动路由并使用一切正常的主干

这是那个配置

define(['jquery'], function($){

$(document).bind("mobileinit", function () {
    $.mobile.ajaxEnabled = false;
    $.mobile.linkBindingEnabled = false;
    $.mobile.hashListeningEnabled = false;
    $.mobile.pushStateEnabled = false;
    // Remove page from DOM when it's being replaced
    $('div[data-role="page"]').live('pagehide', function (event, ui) {
        $(event.currentTarget).remove();
    });
});
});

然后在我的 ajax 调用我的观点时我使用这段代码

     $.ajax({
            beforeSend: function() { $.mobile.showPageLoadingMsg(); },
            url: this.template,
            dataType: 'html',
            async: false,
            success: function(data) {
                compiled = _.template(data);
                $.mobile.hidePageLoadingMsg();
            }
        });

这在 Firefox 中显示加载器正常,但不适用于 chrome 或我的 ios 设备?

谁能帮忙?

谢谢

4

1 回答 1

1

像 Chrome/safari/android/iOS 这样的 Webkit 浏览器存在 jQM 和 async: false ajax 调用的问题。在处理 ajax 调用时,它们将被锁定。无论出于何种原因,Firefox 都没有这样的问题。

改变:

async: false,

至:

async: true,

如果 async: false 对您的应用程序功能至关重要,并且您希望在 ajax 工作时阻止用户交互,请在整个应用程序上显示一个透明的 div 覆盖。在发送前状态下执行它并在成功或失败状态下将其删除。

于 2012-12-21T09:53:00.773 回答