【发布时间】:2016-02-13 19:37:25
【问题描述】:
我在 Internet Explorer 中遇到了一些 javascript 问题。
它在其他浏览器中运行良好。
我有以下方法,它改变图像的 src 属性,当发生这种情况时,应该开始下载该图像。见下文:
for (var i = 0; i < imagesStartedDownloading.length; i++) {
if (imagesStartedDownloading[i] == false && responseItems[i] == true) {
console.log("image", i);
var url = baseurl + "/ImageDownload/?imageName=" + hash + "_" + imageDegrees[i] + ".jpg" + "&r=" + Math.random();
imagesStartedDownloading[i] = true;
images.eq(i).attr("src", url);
}
}
问题在于,在更改此属性时,Internet Explorer 会开始无限循环下载图像。请注意,我在 for 循环中放置了一个 console.log。我可以确认这个 for 循环不会在 endles 循环中运行。对于应该下载的每个图像,它只运行一次。所以这不是问题。
实际上可以在此页面上看到该行为:http://www.energy-frames.dk/Konfigurator。按 F12 并检查网络选项卡。对主页上的图像进行更改,以便开始下载新图像,例如Bredde(英文宽度),见下文:
当进行此更改时,新图像会无限循环下载(几乎每次在 IE 中都会发生)。请参阅下面您可以更改的内容
我确实花了很多时间在这方面进行调试,但我不明白为什么它在 IE 中的行为如此,但在所有其他浏览器中却不然。
那么有人知道为什么会这样吗?或者对我可以尝试什么有一些建议? 编辑:
@gxoptg 我已经尝试过你的建议。像这样使用“javascript:void 0”:
var newimg = $("<img class='rotator" + (isMainImage ? " active" : "") + "' src='javascript:void 0' />");
还有这个:
img.attr("src", "javascript:void 0");
给我这个错误:
另一方面,如果我完全删除行 img.attr("src", ""); 在 imgLoadError 方法中,我看到图像不是在无限循环中下载的。另一方面,它们不显示。那我是不是用 javascript:void 0 错了?
当我执行以下操作时:
img.attr("src", "void(0)");
然后没有无限循环,但图像不会出现在 IE 中 - 在 chrome 中仍然可以正常工作。
【问题讨论】:
-
您能否也分享一下图像变量被投射、使用等的代码,以便我有一个更好的主意,如果不分享文件的名称,因为您的脚本文件夹中有很多.谢谢。
-
你试过
img.setAttribute("...", "...")或img.src = "..."
标签: javascript html image internet-explorer