如何强制刷新Chrome,Safari



在我的网站中,我有一个下载JSON数据的过程。在此期间,我全屏显示了一个旋转的div。对于FF和IE,div在开始下载之前是可见的,但在Chrome和Safari中则不可见。

JSFiddle链接在这里:https://jsfiddle.net/r6s0cr31/4/,背景颜色在Chrome和Safari上不会改变,对于IE和FF,背景颜色之前会改变。

$('#mapLoading').show();
$.ajaxSetup({async: false});
$.getJSON("https://router.project-osrm.org/route/v1/driving/0,40;0,42?overview=full&alternatives=true&steps=true",
   function( response ) {
   }
)
$('#mapLoading').hide();

如果我在 getJSON 之前在控制台(chrome(中放置一个停止点,我可以看到div 正确显示。我试图在没有 JQuery 的纯 JS 中做到这一点,但问题似乎是相同的。

提前感谢您的帮助

而不是使用同步(冻结浏览器(,使用异步并在获得响应后隐藏它将解决问题:

$('#btn').click(function(){
    $('#mapLoading').show();
    $.getJSON("https://router.project-osrm.org/route/v1/driving/0,40;0,42?overview=full&alternatives=true&steps=true")
    .then(function(response){
        $('#mapLoading').hide();
    })    
})

https://jsfiddle.net/r6s0cr31/7/

您正在使用与 chrome 代码无关的已弃用异步错误 在 ajax 调用超时之前冻结将解决问题

 setTimeout(function () {
$.ajaxSetup({async: false});
$.getJSON("https://router.project-osrm.org/route/v1/driving/0,40;0,42?overview=full&alternatives=true&steps=true",
   function( response ) {
   }
)
$('#mapLoading').hide();
}, 20);

在您的情况下,代码被执行,但在回调后看到

在这里工作小提琴 https://jsfiddle.net/r6s0cr31/5/

似乎Chrome和Safari在执行后首先运行该函数并重新渲染页面内容。因此看不到任何变化。

正如Andy Chen已经写过的那样,即使在用户体验方面,最好是异步:

$('#btn').click(function(){
    $('#mapLoading').show();
    $.getJSON("https://router.project-osrm.org/route/v1/driving/0,40;0,42?overview=full&alternatives=true&steps=true",
       function( response ) {
         /* ...code here... */
         $('#mapLoading').hide();
       }
    )
})

感谢您的回复,我了解到:- 没有异步请求冻结Chrome和Safari- Chrome和Safari首先运行该功能,然后更新页面设计。

再次感谢

相关内容

  • 没有找到相关文章

最新更新