3

我正在构建一个页面来显示一堆网络摄像头图像并定期更新它们,以便该页面可用于一目了然的监控。但是,我在定期重新加载工作时遇到问题。我的代码看起来像:

<div class='cameras'> 
    <div class='camera'> 
      <h4>Desk</h4> 
      <img height='240' src='http://somehost/cameras/cam0/lastsnap.jpg' width='320'> 
    </div> 
    <div class='camera'> 
      <h4>Main Room</h4> 
      <img height='240' src='http://somehost/cameras/cam1/lastsnap.jpg' width='320'> 
    </div> 
    <div class='camera'> 
      <h4>Studio</h4> 
      <img height='240' src='http://somehost/cameras/cam2/lastsnap.jpg' width='320'> 
    </div> 
  </div> 

理想情况下,我希望每隔几秒钟从它们指定的 URL 重新加载这些东西,而不必为每个相机生成单独的 JS。我已经将 jQuery 用于其他一些零碎的东西,所以坚持下去会很棒 - 再说一遍,一个普通的 JS 解决方案也很好。

任何想法,StackOverflow JS 神?

4

4 回答 4

7

好的,解决了这个问题:

function refreshCameras() {
  $('.camera img').attr('src', function(i, old) { return old.replace(/\?.+/,"?i=" + (Math.random()*1000)); });
  setTimeout(refreshCameras, 1000);
}
function refreshCamerasFirst() {
  $('.camera img').attr('src', function(i, old) { return old + "?i=" + (Math.random()*1000); });
  setTimeout(refreshCameras, 1000);
}
$(function() {
    setTimeout(refreshCamerasFirst, 1000);
});

将获取“相机”类中的所有 img 元素,并通过添加到 URL 的随机数每秒刷新它们,并通过缓存清除来刷新它们,每次重新加载都会更改该随机数,而不会使用正则表达式替换现有的数字。

于 2010-10-10T03:08:56.940 回答
2

为图像生成图像源 [定期]

var img = []; //just an image source. you can write your own code for image source

img[0] ='http://site.com/pics/pic.jpg';
img[1] ='http://site.com/pics/pic1.jpg';
img[2] ='http://site.com/pics/pic2.jpg';
img[3] ='http://site.com/pics/pic3.jpg';

$(function() {
    $.each(img, function(i, val) {
        var images = new Image();
        images.src = val;    //preloading images for my example purpose
    });
    function reload() {
        $('img.alter').each(function() { //generate a url for  image source. 
            var src = img[Math.floor(Math.random() * img.length)];
            $(this).attr('src',src);
        });
    }   
    setInterval(reload , 5000)
});

在这里测试

PS:此技术不需要重新加载整个页面

于 2010-10-10T03:39:28.163 回答
1

尝试将您页面上的元标记重写为

<meta http-equiv="Refresh" content="2; URL=yourpage.php">

它适用于文本。用图像结帐

于 2010-10-10T03:09:58.963 回答
1

如果您想在指定的持续时间内刷新页面,您也可以在 html 中执行此操作

将此标签添加到您的页头标签

<meta http-equiv="refresh" content="1">

这里的内容是以秒为单位的持续时间参考这个

http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm

于 2010-10-10T03:12:35.183 回答