如何摆脱'进步'光标?

时间:2012-06-04 16:01:00

标签: javascript jquery ajax

我有一个启动AJAX调用的间隔来检查页面是否有任何更新(我想它类似于Facebook或StackExchange用来检查新通知的机制)。问题是此调用将光标更改为“progress”或“busy”光标(视觉问题)并禁用选项以单击链接(功能问题)。

我认为这两个问题都是相关的。如何摆脱这种影响或至少减少后果?

一些代码:

setInterval(function() {
    try {
        var mid = $($("ul#alert-messages li.regular")[0]).attr('ref');
        call_ajax('/load_alerts', {num:0, id:mid}, function (data) {
            if (data.ok) {
                for (var i=0; i<data.result.length; i++) {
                    // ....
                }
                // ...
            }
        }, function() {},          // Do not show any error for this!!
        false);                    // Do not change cursor!
    } catch (e) {}
}, 15000);

function call_ajax(url, data, fnSuccess, fnError) {
    $.ajax({
        'url': url,
        'type': 'POST',
        'data': data,
        'dataType': "json",
        'success' : function(data) {
            if (fnSuccess) {
                fnSuccess(data);
            } else {
                if (typeof data.msg != 'undefined') {
                    topBar(data.msg, typeof data.ok != 'undefined' && data.ok? 'message' : 'error');
                }
            }
        },
        error : function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
            if (fnError) {
                fnError(STR_ERROR_AJAX + textStatus);
            } else {
                topBar(STR_ERROR_AJAX + textStatus, 'error');
            }
        }
    });
}

1 个答案:

答案 0 :(得分:2)

我认为在您的ajax调用中添加 async:true 选项会有效。否则浏览器将冻结,直到ajax停止,这不是你想要的