javascript - 如何在通过 JavaScript 加载图像时显示微调器

标签 javascript jquery dom

我目前正在开发一个 Web 应用程序,该应用程序的页面显示单个图表(.png 图像)。此页面的另一部分有一组链接,单击这些链接后,整个页面会重新加载,除了页面中间的图表外,看起来与以前完全一样。

我想要做的是当点击页面上的链接时,页面上的图表会发生变化。这将极大地加快速度,因为页面大约有 100kb 大,并且真的不想为了显示它而重新加载整个页面。

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

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

问题在于,当用户单击链接时,图表可能需要几秒钟才能更改。这会让用户认为他们的点击没有完成任何操作,或者系统响应缓慢。

我想要发生的是显示一个微调器/颤动器/状态指示器,代替图像在加载时的位置,因此当用户单击链接时,他们至少知道系统已经接受了他们的输入并且正在做关于它的一些事情。

我尝试了一些建议,甚至使用 psudo 超时来显示微调器,然后快速返回图像。

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

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

这将是理想的,除了微调器比正在显示的图表小得多。

还有其他想法吗?

最佳答案

我使用类似这样的方法来预加载图像,然后在图像加载完成时自动回调我的 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(){};
    }
  }
}

关于javascript - 如何在通过 JavaScript 加载图像时显示微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352/

相关文章:

javascript - 为什么 npm 会尝试编译我的旧版本代码?

javascript - 将附加参数传递给 jQuery each() 回调

javascript - 如何替换窗口中的文档?

javascript - 这两个 if block 之间有逻辑差异吗?

javascript - 是否所有 HTML 元素都放在 bootstrap 中的 <div> 标记中?

javascript - 表单始终使用 Javascript 确认提交

javascript - 当模态打开时向正文添加样式

javascript - 用js搜索html表但如果没有结果则显示

javascript - 在向 DOM 添加新元素后,如何使事件过滤器按价格排序?

javascript - 如何选择在同一函数内使用innerHTML启动的类