通过JavaScript加载图像时如何显示微调框

jklp:

我目前正在使用一个Web应用程序,该应用程序的页面显示一个图表(.png图像)。在页面的另一部分上,有一组链接,单击这些链接后,整个页面将重新加载,并且外观与之前完全相同,除了页面中间的图表。

我想做的是单击页面上的链接后,只需更改页面上的图表即可。由于页面大约100kb大,这将极大地加快处理速度,并且真的不想为了显示此页面而重新加载整个页面。

我一直在通过JavaScript执行此操作,到目前为止,该JavaScript可以使用以下代码运行

document.getElementById('chart').src = '/charts/10.png';

问题在于,当用户单击链接时,图表更改可能需要几秒钟的时间。这使用户认为他们的点击没有做任何事情,或者系统响应缓慢。

我想要发生的是显示一个微调器/抖动器/状态指示器,以代替图像加载时的位置,因此,当用户单击链接时,他们至少知道系统已接受输入并正在对其进行操作。

我尝试了一些建议,甚至使用psudo超时来显示微调框,然后再飞回图像。

我收到的一个很好的建议是使用以下内容

<img src="/charts/10.png" lowsrc="/spinner.gif"/>

除了微调器明显小于显示的图表之外,这将是理想的选择。

还有其他想法吗?

艾德·哈伯(Ed Haber):

我已经使用过类似的方法来预加载图像,然后在图像加载完成后自动调用我的JavaScript。您想在设置回调之前检查完成情况,因为该图像可能已被缓存,并且可能不会调用您的回调。

function PreloadImage(imgSrc, callback){
  var objImagePreloader = new Image();

  objImagePreloader.src = imgSrc;
  if(objImagePreloader.complete){
    callback();
    objImagePreloader.onload=function(){};
  }
  else{
    objImagePreloader.onload = function() {
      callback();
      //    clear onLoad, IE behaves irratically with animated gifs otherwise
      objImagePreloader.onload=function(){};
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

反应:图像加载时显示加载微调器

如何在单击Angular2模板中的按钮时显示加载图像/微调框,直到收到服务器的响应

jQuery-在div中加载内容时如何显示微调框?

UITableView在滚动通过底部时显示“加载微调器”

通过 JQuery 制作 POST API 时显示加载微调器

如何在材料表加载时显示加载微调器

Angular / Ionic:如何在加载组件时显示微调器

仅当从Http服务获取数据时,如何显示微调框?

页面加载后通过javascript显示图像

发出Axios请求时加载微调框

Javascript - 在图像加载时显示 div

如何在加载 url 时显示图像

页面快速加载时如何显示图像?

jQuery调用ASP.NET MVC中的Controller时显示加载微调框

加载时获取请求显示微调器

通过 uri 加载时,Glide 显示黑色图像

当组件加载html / css时,blazor加载微调框

如何使用ajaxStart显示加载微调器?

如何显示jQuery中的加载微调器?

Vue延迟加载,在加载图像时删除微调器

如何在页面加载时显示加载的gif图像

在请求期间如何显示微调框?

在加载图表时显示加载微调器的问题

微调框未显示所选项目,微调框已从数组列表中加载

加载内容时如何在Flutter WebView中显示微调器

在asp.net MVC中提交局部视图时,如何显示加载微调器?

如何在从 Firestore 获取数据时显示加载微调器

在Flutter中获取当前位置时如何显示加载微调器?

使用微调器时如何添加图像