Похоже, что вы вводите URL-адрес SRC
для изображения, используя JavaScript, который запускает вызов AJAX раз в секунду для получения свежих данных.Я подозреваю, что изображение, вероятно, мигает из-за задержек в сети - для загрузки свежих данных изображения требуется некоторое время, а затем они обновляются.
Вы можете попытаться ввести в сценарий задержку в одну секунду.Используйте два изображения: одно на экране для текущих отображаемых данных, а другое за пределами экрана.Загрузите свежую информацию в изображение вне экрана.Затем поменяйте местами положения двух изображений (экран выключается, экран выключается).Поскольку свежие данные будут загружены в изображение вне области просмотра, загрузка не будет происходить визуально.Простое перемещение его в нужное положение должно происходить без заметного мерцания.
Это будет примерно так (это псевдокод, который не обязательно будет запускаться).Сначала немного HTML - просто пара изображений.
<img src="initial.png" alt="heatmap" class="heatmap onscreen" />
<img src="loading-area.png" alt="heatmap" class="heatmap" />
Затем немного CSS:
/* By default heatmaps are off screen. */
.heatmap { position: absolute; left: -999em; }
/* But then we override that for ones marked as on screen. */
.heatmap.onscreen { position: static; left: auto; }
Наконец немного JavaScript.
var firstRun = true;
function loadNewImage(){
// Download fresh image and load it into an image OFF SCREEN.
var imagePath = '/path/to/image.png?dummy='+Math.floor(Math.random()*101);
$(".heatmap:not(.onscreen)").attr("src", "imagePath");
}
function updateImage(){
if(firstRun){
// The first time this function runs, load new data ...
loadNewImage();
// Now make a note that the function has run already.
firstRun = false;
// And return without doing anything else.
return false;
} else {
// The off screen image has fresh data by this time. Swap it.
$(".heatmap:not(.onscreen)").addClass("next");
// Remove the onscreen class from the current image, so it
// moves off screen.
$(".onscreen").removeClass("onscreen");
// Add onscreen to the next one, moving it into place.
$(".next").addClass("onscreen");
// Remove the "next" class from the newly displayed image.
$(".next").removeClass("next");
// Load more image data.
loadNewImage();
}
// Lastly, call this same function again in a second.
window.setTimeout(updateImage, 1000);
}
$(document).ready(function(){
// Start the swapping.
updateImage();
});
Предположим, у вас естьдостаточно быстрое и надежное соединение, что-то подобное должно позаботиться о мерцании, вызванном задержкой в сети.Он вводит задержку в одну секунду - текущее отображаемое изображение всегда будет на одну секунду позади реального времени.Но если синхронизация в реальном времени важна для вас, то HTML / CSS / JavaScript, вероятно, не тот инструмент для работы.
Если есть какая-то ДРУГАЯ причина для вашего мерцания, хорошо, удачи.