Javascript “变化与形象”;src";对于缓存的图像,会导致奇怪的闪烁

Javascript “变化与形象”;src";对于缓存的图像,会导致奇怪的闪烁,javascript,javascript-events,Javascript,Javascript Events,在一个页面中,我们有一个图像,在移动后被另一个图像替换。这是一个简单的地图导航界面 它的工作原理大致如下(很抱歉无法向您展示真实的代码或示例,但它是一个私人网站): var-imgMap=document.getElementById('myimage'); var-imgMapTemp; ... ... 函数loadnewimage(){ imgMapTemp=新图像(); imgMapTemp.onload=函数() { updateimage(); } imgMapTemp.src='so

在一个页面中,我们有一个图像,在移动后被另一个图像替换。这是一个简单的地图导航界面

它的工作原理大致如下(很抱歉无法向您展示真实的代码或示例,但它是一个私人网站):

var-imgMap=document.getElementById('myimage');
var-imgMapTemp;
...
...
函数loadnewimage(){
imgMapTemp=新图像();
imgMapTemp.onload=函数()
{
updateimage();
}
imgMapTemp.src='someurl';
}
函数updateimage(){
imgMap.style.top=0;
imgMap.style.left=0;
imgMap.src=imgMapTemp.src;
}
发生的情况是,旧图像在新图像出现之前的一个非常短暂的瞬间再次显示


这件事不久前还没有发生。它从Chrome开始出现,现在在所有最新版本的浏览器中都出现了,所以我想知道这是否是由javascript引擎中的优化引起的?

很有可能。在其他浏览器中进行测试以确定。这发生在Chrome(当前)和Firefox版本4及更高版本(可能更早,不确定)。IE8和最新的狩猎或歌剧中都没有出现这种情况。我没有IE9(我们运行的是Windows XP)。编辑:我们发现了一个较旧的Firefox,并确认它没有出现在FF 3.6中,这是因为FF使用了Jägermonkey JS引擎。关于如何避免这种闪烁的任何建议仍然非常受欢迎。因为这是一个地图-您可以尝试在屏幕外加载图像(甚至更远)。因此,闪烁可能发生在可见地图区域之外。在其他浏览器中进行测试以确定。这发生在Chrome(当前)和Firefox版本4及更高版本(可能更早,不确定)。IE8和最新的狩猎或歌剧中都没有出现这种情况。我没有IE9(我们运行的是Windows XP)。编辑:我们发现了一个较旧的Firefox,并确认它没有出现在FF 3.6中,这是因为FF使用了Jägermonkey JS引擎。关于如何避免这种闪烁的任何建议仍然非常受欢迎。因为这是一个地图-您可以尝试在屏幕外加载图像(甚至更远)。因此,闪烁将发生在可见地图区域之外。
var imgMap = document.getElementById('myimage');
var imgMapTemp;
...
<the user moves the image around, and this triggers the loading of the new one>
...
function loadnewimage() {
  imgMapTemp = new Image();
  imgMapTemp.onload = function() 
  {
    updateimage();
  }
  imgMapTemp.src = 'someurl';
}

function updateimage() {
  imgMap.style.top = 0;
  imgMap.style.left = 0;
  imgMap.src = imgMapTemp.src;
}