Firefox、iOS Safari无法使用jQuery多次更改img src。

3
我正在尝试使用jQuery每秒更改img标签的src属性。在Google Chrome上工作得很好,每秒钟显示一张新图片。但是在Firefox或iPad上无法工作。仅更改一次图像。
这是我使用的代码:
$(document).ready(function(){
    function refreshIMG(){
        $("#camara").attr("src", "localhost:4000");
    }
});
window.setInterval(refreshIMG, 1000)

在本地主机上,我运行了一个Tornado服务器,并使用OpenCV保存了我的网络摄像头图像。我知道这个工作是因为它在Google Chrome上工作并且将图像保存在我的硬盘上。 同时,在refreshIMG函数中添加alert(“test”),每秒钟在Firefox和iPad2上显示警告,但图像不会更改。 测试结果:FireFox 11、iOS 5.1的iPad、Chrome 18、Ubuntu 11.10。

你编写的代码中,refreshIMG不在作用域内 - 但我猜这只是一个编辑问题,真正的问题可能是缓存和/或在更改图像之前没有等待第一张图像加载完成。 - FilmJ
1个回答

7

这些其他浏览器是否可能检测到src是相同的,因此不会更改任何内容?

尝试在你的src中添加?time=" + new Date().getTime()。我还建议将setInterval移动到$(document).ready()内部,以防它尝试在DOM未准备好时执行refreshIMG()(虽然不太可能,但良好的实践)。最终产品应该像这样:

$(document).ready(function(){
    function refreshIMG(){
        $("#camara").attr("src", "localhost:4000?time=" + new Date().getTime());
    }
    window.setInterval(refreshIMG, 1000);
});

这可能会“欺骗”那些浏览器,使它们认为这是完全不同的图片并刷新它。

否则,您可以尝试使用AJAX调用到一个页面,该页面唯一的内容是<img src="localhost:4000">,然后使用当前图片的HTML替换该HTML。


将日期添加到URL中后,功能完美。非常感谢。 - danielfrg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接