【发布时间】:2011-08-07 09:20:36
【问题描述】:
我正在尝试在 javascript 中克隆图像,但不加载新图像。
通常,新浏览器会加载一次图像,并且有多种方法可以再次使用该图像。
问题是当我在 IE 6 中测试它时,图像会从服务器请求一个新图像。
任何人都有一些关于如何在旧浏览器中执行此操作的信息?
3 种无效的方法:
<html>
<head>
<title>My Image Cloning</title>
<script type="text/javascript">
sourceImage = new Image();
sourceImage.src = "myImage.png";
function cloneImageA () {
imageA = new Image();
imageA.src = sourceImage.src;
document.getElementById("content").appendChild(imageA);
}
function cloneImageB () {
imageB = sourceImage.cloneNode(true);
document.getElementById("content").appendChild(imageB);
}
function cloneImageC()
{
var HTML = '<img src="' + sourceImage.src + '" alt="" />';
document.getElementById("content").innerHTML += HTML;
}
</script>
</head>
<body>
<div id="controle">
<button onclick="cloneImageA();">Clone method A</button>
<button onclick="cloneImageB();">Clone method B</button>
<button onclick="cloneImageC();">Clone method C</button>
</div>
<div id="content">
Images:<br>
</div>
</body>
解决方案
在图像目录中添加了带有简单 .htaccess 文件的服务器端缓存头:
/img/.htaccess
Header unset Pragma
Header set Cache-Control "public, max-age=3600, must-revalidate"
如果设置了缓存头,上述所有 javascript 方法都将使用加载的图像。
【问题讨论】:
-
您到底为什么要在 IE 6 中进行测试?
-
@Iwburk :胡乱猜测,别开枪:这是先决条件。
-
@lwburk 因为它有助于降低服务器请求。无论如何,人们仍在使用旧版浏览器。
-
您可以尝试通过在开始页面上显示一些框建议他们升级来劝阻人们使用 IE6。类似于:“此站点在您的浏览器中可能无法正常运行。请升级到...等。”
-
@Kooilnc : 好点,没有其他解决方案时我会这样做
标签: javascript image cross-browser copy clone