Cli*_*son 6 ajax jquery dom asynchronous refresh
我的Busy图标出现浏览器问题.代码如下所示:
$("#busysymbol").show();
$("#busysymbol").position({my:"right top",at:"right top",of:$("#datepicker"),offset:"-3 3"});
var resp = $.ajax({url: "book_ajax.php?req=daysformonth&month=1",
cache: false,
async: false
}).responseText;
$("#busysymbol").hide();
var daysInMonth = resp.split(",");
...etc...Run Code Online (Sandbox Code Playgroud)
此代码在Firefox中运行良好,但在Chrome和Safari中,繁忙的符号未显示.我相信Chrome和Safari正在缓存DOM的变化和$("busysymbol").show()调用并不会立即刷新.
有没有办法可以强制Chrome/Safari更新显示屏.
也许尝试为繁忙的符号使用ajaxStart和ajaxStop全局事件.例如:
$("#busysymbol").ajaxStart(function(){
$(this).show();
});
$("#busysymbol").ajaxStop(function(){
$(this).hide();
});
Run Code Online (Sandbox Code Playgroud)
在代码的开头,并从您的特定.ajax()处理程序中删除隐藏和显示.
哦,我刚刚注意到你正在使用同步请求,所以它甚至不是AJAX - 更像是SJAX.在等待请求完成或超时时,您是否有充分理由完全阻止浏览器的用户界面?如果没有,那么尝试使用这样的东西:
$("#busysymbol").hide();
$("#busysymbol").ajaxStart(function(){
$(this).show();
});
$("#busysymbol").ajaxStop(function(){
$(this).hide();
});
var resp = $.ajax({url: "book_ajax.php?req=daysformonth&month=1",
cache: false,
success: function (resp) {
var daysInMonth = resp.split(",");
...etc...
}
});
Run Code Online (Sandbox Code Playgroud)
(未测试)
尝试在没有重新定位#busysymbol的情况下工作,然后尝试在一开始就添加正确的定位.请记住,.position()不接受参数,以便代码中最长的行实际上没有做任何事情 - 请参阅文档.你需要的是.offset()或.css().
| 归档时间: |
|
| 查看次数: |
6795 次 |
| 最近记录: |