【发布时间】:2018-08-17 04:29:54
【问题描述】:
我有下面的代码,它从目录中获取图像并以 HTML 显示。此目录中的图像每秒都在不断变化。它在桌面浏览器上有点工作,但我不能让它在移动浏览器上工作。似乎它总是在读取缓存的图像,而不是从服务器重新加载。它可以通过在桌面浏览器上按 ctrl+F5 来工作,但在移动浏览器上则不行。有没有办法通过 JavaScript 硬刷新移动浏览器(chrome)?
<html>
<head>
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Expires" content="-1">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<img id="viewer" src="" width="100%"/>
<div id="info"> </div>
<button id="btnLeft" type="button">Left</button>
<button id="btnRight" type="button">Right</button>
<input type="button" value="Refresh page" onclick="location.reload(true);" />
<script>
$(function() {
var baseUrl = "./Cam01/";
var pictureIndex = 0;
var pictures = [];
function getFiles() {
$.ajax(baseUrl).success(function(data) {
pictures = [];
$(data).find("a[href]").each(function() {
var href = $(this).attr('href');
if (href.indexOf('.jpg') > 0 || href.indexOf('.png') > 0 || href.indexOf('.jpeg') > 0) {
pictures.push(href);
}
});
console.log(pictures.length + " pictures loaded!");
changePicture(0);
});
}
function changePicture(indexOffset) {
pictureIndex += indexOffset;
if (pictureIndex >= pictures.length) {
pictureIndex = 0;
} else if (pictureIndex < 0) {
pictureIndex = pictures.length - 1;
}
$('#viewer').attr('src', baseUrl + pictures[pictureIndex]);
$('#info').text((pictureIndex + 1) + "/" + pictures.length);
}
getFiles();
$('#btnLeft').click(function() {
var left = -1;
changePicture(left); return false;
});
$('#btnRight').click(function() {
var right = 1;
changePicture(right); return false;
});
$(document).keydown(function(e){
var left = -1, right = 1;
if (e.keyCode == 37) {
changePicture(left); return false;
} else if (e.keyCode == 39) {
changePicture(right); return false;
}
});
});
</script>
</body>
</html>
【问题讨论】:
-
为什么要强制移动用户不断加载更多数据?
-
在图像定期更改的项目中,我喜欢将“文件修改”时间戳附加到 URL。见Cache busting via params。
-
@Ajaypayne,它只是个人项目使用的远程图像查看器。数据使用不是一个问题。
-
好的,那么为了确保您始终拥有最新的而不是缓存,您应该查看@showdev 的评论
-
@showdev,我查看了您的链接,但不确定如何实现。
标签: javascript android html image viewer