当前位置: 首页 > 面试题库 >

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

包承望
2023-03-14
问题内容

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

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

我一直在通过JavaScript执行此操作,到目前为止,该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(){};
    }
  }
}


 类似资料:
  • 问题内容: 我有一个React应用,可以调用我的API,该API返回URL列表以用作imy图像src。 我用来显示图像加载时的加载微调组件。 我有一个变量来确定图像是否正在加载。 我无法弄清楚如何停止显示正在加载的微调器,并在它们全部加载后显示图像。 这是我的代码: Photos.jsx Photo.jsx 我尝试将我的最后一项用于,但是它永远不会被调用,因为由于仍然显示了微调框,所以它从未设置为

  • 问题内容: 我有一个网页,该网页使用命令shell_exec运行python脚本。我想要一个加载微调器,在Python脚本运行时显示“请稍等此页面加载”消息,然后在执行完之后显示其余的回显HTML。 我找到了看似不错的解决方案,但是我对ajax还是陌生的,所以我不知道如何使用该解决方案。我试着做 但这没有用。我需要调用ajax来执行ajaxStart吗?我怎么称呼它?我应该用ajax代码包装she

  • 我正在尝试使用Glide在Listview中加载一些图像。如果加载图像时未使用占位符,则图像将正确加载。然而,当我试图设置占位符时,我正在通过网络加载的图像似乎被拉伸了。这仅在使用占位符图像的情况下发生。如果我离开屏幕并返回(因此没有加载占位符图像),则图像会正确显示。 这是我的简单Glide实现:

  • 我正试图通过adb shell在我的三星Note 3上显示本地图像。 ,但仍然不起作用。有人能帮我吗,真的很感激!

  • 问题内容: 我有一个代码可以显示员工图表。 数据(名称,电话,照片等)存储在SQLServer中,并通过JSP显示。可以正常显示数据,但图像.jpg(存储在IMAGE = BLOB列中)除外。 顺便说一句,我已经显示了图像(请参见下面的代码),但是我不知道如何将其放在.css定义的区域中(也请参见以下代码),因为图像是通过resultSet被加载到浏览器的整个页面中。 有谁知道我如何“构图”图像?

  • 问题内容: 我只是想知道如何显示指示异步请求正在运行的图像。我使用以下代码执行异步请求: 有任何想法吗? 问题答案: 当然,您可以在发出请求之前显示它,并在请求完成后隐藏它: 我通常更喜欢将其绑定到全局ajaxStart和ajaxStop事件的更通用的解决方案,这样它就可以显示在所有ajax事件中: