javascript html update img src - 这有啥问题? [复制]

Posted

技术标签:

【中文标题】javascript html update img src - 这有啥问题? [复制]【英文标题】:javascript html update img src - what's wrong with this? [duplicate]javascript html update img src - 这有什么问题? [复制] 【发布时间】:2015-03-29 03:50:45 【问题描述】:

代码第一次工作,递归调用工作,但图像没有更新。注意: .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=""  />
         <script type="text/javascript">
            t = setTimeout('updateimg()', 2000);
         </script>
    </body>
</html>

【问题讨论】:

对我来说很好用,但不要将字符串传递给setTimeout,为什么你一直递归调用函数,它每次都做同样的事情 我猜网址会随着时间而改变,这就是为什么 【参考方案1】:

图像未更新,因为它被您的浏览器缓存并且您使用的是相同的 URL。尝试在图像 URL 中添加日期,您应该使用 setInterval 而不是递归调用:

var timer = setInterval(function()

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

,5000);

【讨论】:

有正确答案的人。 GET 请求被缓存,如果缓存标头在那里,它不会去服务器获取新图像。添加时间戳使其获得新图像。 就是这样 - 浏览器只是在缓存臭照片 我已经准备好踢我的电脑了——谢谢! 去过那里,这个问题会让你发疯。享受。 好的 - 现在我已经看到了行为,这是主题 - 你知道如何使用 javascript 清除页面的缓存吗?它真的在图像被缓存时构建......或者我可以预先使用一些脚本来告诉浏览器不要为页面缓存?【参考方案2】:

正如@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=""  />
         <script type="text/javascript">
            t = setTimeout(updateimg, 2000);
         </script>
    </body>
</html>

【讨论】:

传递字符串是 100% 有效的,与 OPs 问题无关。 你是对的,感谢您指出这一点。

以上是关于javascript html update img src - 这有啥问题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

NaviCat SqlServer Windows 10 Update 1803 IM004 - Driver's SQLAllocHandle on SQL_HANDLE_ENV faile

javascript html update img src - 这有啥问题? [复制]

for update在mysql中使用

javascript im.js

javascript 加入html

javascript - 在iOS中的按钮上模拟点击事件(用手指点击)