JQuery重复加载图像

时间:2011-01-24 23:22:01

标签: image jquery

我为PC提供了一个基本的远程控制API,它通过AJAX接受命令(移动鼠标,点击,发送键等)。它还为指定的屏幕提供图像

API有一个前端,主要是jQuery驱动的。

我有一个img标签,显示当前所选屏幕的屏幕截图,并有鼠标移动/点击事件,可在幕后调用相应的API。

屏幕图像目前更新如下:

    function UpdateScreen() {
        $("#Screenshot").attr("src", "./AJAX/UI/GetScreen.aspx?Screen=" + encodeURIComponent(targetScreen) + "&Date=" + encodeURIComponent(Date()));
        setTimeout('UpdateScreen()', 3000);
    }

哪个工作正常,但效率低得离谱 - 图像加载时间不到3秒,在这种情况下,我的刷新率低于应有的值或​​超过3秒,在这种情况下旧请求终止(例如移动超过2G)。

如何在完成加载后重新加载图像?更好的是,有没有什么方法可以像AJAX调用一样,而不是依赖浏览器?这样,我可以捕获失败,有一个进度条,还可以控制图像的重绘方式(使用像缓冲区这样的东西)。

提前致谢

3 个答案:

答案 0 :(得分:2)

使用本机Javascript Image对象并等待onload在设置超时之前触发...

function UpdateScreen() {
  var img = new Image();
  img.onload = function() {
    $("#Screenshot").attr("src", this.src);
    setTimeout(UpdateScreen, 3000);
  }
  img.src = "./AJAX/UI/GetScreen.aspx?Screen=" + encodeURIComponent(targetScreen) + "&Date=" + encodeURIComponent(new Date());
}

答案 1 :(得分:1)

在图像上使用加载事件。即:

$("#Screenshot").load(UpdateScreen);
  function UpdateScreen(){
  $("#Screenshot").attr("src", "./AJAX/UI/GetScreen.aspx?Screen=" 
    + encodeURIComponent(targetScreen) + "&Date=" + encodeURIComponent(Date()));        
}

答案 2 :(得分:1)

试试这个......

function UpdateScreen() {

   var imgSrc = "./AJAX/UI/GetScreen.aspx?Screen=" + encodeURIComponent(targetScreen) + "&Date=" + encodeURIComponent(Date()),
       img = new Image();

   img.onload = function() {
    $("#Screenshot").attr("src", img.src );           
       setTimeout(UpdateScreen, 3000);
   };

   img.src = imgSrc;

}