Я пытаюсь «ПОЛУЧИТЬ» изображение из файла каждые 100 мс путем изменения источника объекта DOM. Я вижу, что вызов GET действительно возвращает правильное изображение каждые 100 мс, но отображение фактического изображения обновляется только один раз в секунду. Вот мой JavaScript код, который делает работу:DOM слишком долго реагирует
<img id="videoDisplay" style="width:800; height:600"/>
<script type="text/javascript">
function videoDataPoll(filename) {
setTimeout(function() {
document.getElementById("videoDisplay").src = filename + "?random="+(new Date()).getTime();
videoDataPoll(filename);
}, 100);
}
</script>
UPDATE: Изменена функция использовать поджимать следующим образом:
<canvas id="videoDisplay" style="width:800; height:600"/>
<script type="text/javascript">
var x=0, y=0;
var canvas, context, img;
function videoDataPoll() {
var filename = getFilename();
canvas = document.getElementById("videoDisplay");
context = canvas.getContext("2d");
img = new Image();
img.onload = function() {
context.drawImage(img, x, y);
setTimeout("videoDataPoll()", 100);
}
img.src = filename + "?random=" + (new Date()).getTime();
}
<script>
все еще обновляется с той же скоростью (что фактически каждые 5 секунд, а не 1s как указано первоначально). Поэтому для каждых 50 запросов на получение (10/сек за 5 секунд) элемент обновляется только один раз.
Другое важное замечание: это второе решение прекрасно работает на моем локальном хосте, где я сталкиваюсь с проблемой, когда я запускаю одну и ту же веб-страницу удаленного хоста.
Перед отображением необходимо предварительно загрузить изображения. В противном случае, 1s - это время загрузки изображения. Вы можете использовать [эту функцию] (http://short-tag.info/2013/04/preload-images-with-plain-javascript/). – antoox
После того, как вызывается 'videoDataPoll',' filename' является – undefined
Ха-ха, комментарий гения. –