2015-01-29 2 views
1

Код работает в первый раз, и рекурсивный вызов работает, но изображение не обновляется. ПРИМЕЧАНИЕ: .src не изменяется - он просто обновляется в камере пару раз в секунду, поэтому, если я обновляю обновленную страницу, но не через вызов рекурсивной функции - что мне нужно сделать, чтобы обновить ее? Благодаря!javascript html update img src - что случилось с этим?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Test Image update from cam</title> 
     <script type="text/javascript"> 
      var t; 
      function updateimg() { 
       document.getElementById('camimg').src = "urlofimgfromcamera - this is valid url"; 
       t = setTimeout('updateimg()', 2000); 
      } 
     </script> 
    </head> 
    <body> 
    <img id="camimg" src="" width="1400" alt=""/> 
     <script type="text/javascript"> 
      t = setTimeout('updateimg()', 2000); 
     </script> 
    </body> 
</html> 
+4

прекрасно работает для меня, но не передавать строки в 'setTimeout', и почему вы держите вызов функции рекурсивно, он делает то же самое каждый раз – adeneo

+0

Я предполагаю, что URL-адрес будет меняться со временем, поэтому – Fedaykin

ответ

1

Изображение не обновляется, так как оно защищено вашим браузером, и вы используете один и тот же URL-адрес. Попробуйте добавить дату вашего URL изображения, и вы должны использовать setInterval вместо рекурсивных вызовов:

var timer = setInterval(function(){ 

    var imgUrl = "image.png?v=" + new Date().getTime(); 
    document.getElementById('camimg').src = imgUrl 

},5000); 
+0

Кто-то, у кого есть правильный ответ. Запросы GET кэшируются, а на сервер не попадает, чтобы получить новое изображение, если есть заголовки кеша. Добавление метки времени позволяет получить новое изображение. – epascarello

+0

что было - браузер был просто кешированием stinkin 'image – jigi

+0

Я был готов готовить свой компьютер - спасибо! – jigi

0

Как @adeneo заостренное, не передавать строки в функцию setTimeout, вы можете даже избавиться от скобки.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Test Image update from cam</title> 
     <script type="text/javascript"> 
      var t; 
      function updateimg() { 
       document.getElementById('camimg').src = "urlofimgfromcamera - this is valid url"; 
       t = setTimeout(updateimg, 2000); 
      } 
     </script> 
    </head> 
    <body> 
    <img id="camimg" src="" width="1400" alt=""/> 
     <script type="text/javascript"> 
      t = setTimeout(updateimg, 2000); 
     </script> 
    </body> 
</html> 
+0

Передача строки на 100% действительна и не имеет ничего общего с проблемой OPs. – epascarello

+0

Вы правы, спасибо, что указали это. – Fedaykin

Смежные вопросы