2011-04-01 105 views
0

我有一个相机,保存jpeg图片,然后我上传到我的网页。即时通讯使用这个javsacript代码做自动刷新:autorefresh图像保存第一个图像

function refreshCam() 
{ 
    document.getElementById("cameraImg").src = "cameraImg.jpeg?a=" + String(new Date().getMilliseconds()); 
    setTimeout("refreshCam()",500); 
} 

然而,第一个图像我把弹出,在连续的图像显示器之间。 更糟糕的是,即使当我关闭相机以便不再保存新图像时,显示的图片仍会继续变化。我如何永久删除此行为?

回答

0

为了防止像“忽悠”,你可以使用这种技术:

function scheduleNextLoad() { 
    setTimeout("loadNextImage()", 500); 
} 

function loadNextImage() { 
    var image = new Image; 
    image.onload = function() { 
     var previousImage = document.getElementById("cameraImg"); 
     previousImage.parentNode.replaceChild(image, previousImage); 
     image.id = previousImage.id; 
     scheduleNextLoad(); 
    } 
    image.onabort = scheduleNextLoad; 
    image.onerror = scheduleNextLoad; 
    image.src = "cameraImg.jpeg?a=" + String(new Date().getMilliseconds()); 
} 

这样做的是创建“就在身边”的新img元素,让它在后台和之后的加载图像图片已加载将其与img交换在页面中。结果是视觉更新瞬间发生。

将一个loadNextImage()火烧掉,让球滚动。

顺便说一句,getMilliseconds()电话并不是最好的选择。您可能需要使用getTime()

+0

谢谢生病尝试这个ASAP – user582485 2011-04-02 02:20:35