javascript 是否可以向图像文件名添加变量?

gk7wooem  于 2023-02-11  发布在  Java
关注(0)|答案(2)|浏览(104)

我是个菜鸟。这可能不太可能,但我喜欢这样的东西:
$variable =[今天的日期]
img源代码="0001.jpg?$变量"
说明:我的主页上有很多图片,我经常更改。但文件名保持不变,所以iPhone不会刷新它们,而是使用旧的缓存图片。每天添加一个新的文件扩展名应该可以确保iPhone加载新的图片。
我正在使用Noteoad来编写我的主页,所以手动更改所有的文件扩展名将需要几个小时。
尝试谷歌,但显然变量是不可能在HTML中,所以...

x3naxklr

x3naxklr1#

你可以在javascript中尝试这种方法,代码应该放在一个script-tag中,作为body标签之后的元素,这样所有的image标签在脚本开始运行之前就已经呈现了。
在您的页面中添加如下脚本标记:

<html>
   <body>
     ...your stuff
   </body>
   <script>
       allImages = document.getElementsByTagName('img')
       allImagesArray = Array.prototype.slice.call(allImages);
       urlParam = new Date().toJSON().slice(0,10);
       for(i=0; i<allImagesArray.length; i++){
          allImagesArray[i].setAttribute('src', allImagesArray[i].src+'?'+urlParam)
       };
   </script>
</html>

说明:

// This will collect all of the images by their tag (img)
// and assign the result to the variable allImages

allImages = document.getElementsByTagName('img')

// 'allImages' now contains something called 'HTMLCollection'
// and here we convert it to an 'Array'

allImagesArray = Array.prototype.slice.call(allImages);

// Get the date today (will only change every 24 hours!)

urlParam = new Date().toJSON().slice(0,10);

// Now we iterate over each element in the 'allImagesArray'
// and add the current date to the url in every images src-attribute

for(i=0; i<allImagesArray.length; i++){
    allImagesArray[i].setAttribute('src', allImagesArray[i].src+'?'+urlParam)
};

然而,这种方法非常简单,也有它的缺点。而且我不确定它是否能在每个目标浏览器中工作。

    • 此外,当您上传新图像时,您必须等到第二天测试时才能看到它们。如果您想立即看到更改,则必须将urlParam更改为www.example.com()的值,这将更改每次重新加载,因为它返回当前毫秒(microtime)。Date.now() this will change every reload because it returns current milliseconds (microtime).

只需将初始化urlParam的行更改为:

urlParam = Date.now()

看起来像这样

<html>
   <body>
     ...your stuff
   </body>
   <script>
       allImages = document.getElementsByTagName('img')
       allImagesArray = Array.prototype.slice.call(allImages);
       urlParam = Date.now();
       for(i=0; i<allImagesArray.length; i++){
          allImagesArray[i].setAttribute('src', allImagesArray[i].src+'?'+urlParam)
       };
   </script>
</html>

我想就这样了。有什么问题尽管问我。
干杯
菲尔

fdx2calv

fdx2calv2#

你根本不需要更新这个变量,如果浏览器看到有一个变量,它会重新加载图像。

<img src=“0001.jpg?v=1”/>

应该可以。

相关问题