Javascript 在Internet Explorer中更改src值时出现无止境循环
我对Internet Explorer中的某些javascript有问题 它可以在其他浏览器中正常工作 我有以下方法,可以更改图像的src属性,当这种情况发生时,应该开始下载该图像。见下文:Javascript 在Internet Explorer中更改src值时出现无止境循环,javascript,html,image,internet-explorer,Javascript,Html,Image,Internet Explorer,我对Internet Explorer中的某些javascript有问题 它可以在其他浏览器中正常工作 我有以下方法,可以更改图像的src属性,当这种情况发生时,应该开始下载该图像。见下文: for (var i = 0; i < imagesStartedDownloading.length; i++) { if (imagesStartedDownloading[i] == false && responseItems[i] == true) {
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);
}
}
给我这个错误:
另一方面,如果我完全删除img.attr行(“src”,“src”);
在imgLoadError方法中,我看到图像不是以无休止的循环下载的。另一方面,它们不显示。那么,我是否使用了javascript:void 0错误
当我执行以下操作时:
img.attr("src", "void(0)");
这样就不会有无休止的循环,但图像不会出现在IE中-在chrome中仍然可以正常工作。原因如下:
for (var i = 0; i < totalnumberofimages; i++) {
var url = "";
var isMainImage = i == currentDragImg;
var newimg = $("<img class='rotator" + (isMainImage ? " active" : "") + "' src='' />");
newimg.on("error", imgLoadError);
newimg.on("load", imgLoaded);
imgcontainer.append(newimg);
}
在这个函数中,您运行img.attr(“src”,“”)
,它设置空的src
属性,触发error
事件,并再次调用imgLoadError
函数。这导致了无休止的循环
为了防止错误(从而避免无休止的循环),请在两个代码段中将image-source设置为“javascript:void 0”
,而不是”
。此源有效,应能正常工作
(根据注释,所有代码都位于
/Assets/Scripts/directives/image.rotation.directive.js
文件中。)另一种解决方案是将src
属性设置为有效的、最小的Base64编码图像,如中所示
这将避免触发无休止的错误处理,并且不会对代码大小产生太大的影响。如果不共享文件名(因为脚本文件夹中有很多文件),您是否也可以共享图像变量的播放位置、使用位置等代码,以便我有更好的想法。谢谢。你试过这个吗?你试过
img.setAttribute(“…”,“…”)
或img.src=“…”
@user1093774:快速思考:尝试替换img.attr(“src”,“javascript:void 0”)代码>带有img.removeAttr(“src”)
。这有帮助吗?这个img.removeAttr(“src”)的组合;这个变量newimg=$(“”);给我一个无止境的循环。@user1093774:我的意思是,写以下内容:var newimg=$(“”)第一个代码段中的code>和var imgUrl=img.attr(“src”);调校调校(“src”);img.attr(“src”,imgUrl)第二个代码中的code>。@user1093774:请注意,第一个代码段包含src='javascript:void 0'
,而第二个代码段包含img.removeAttr(“src”)
,而不是img.attr(“src”)
。谢谢,我将尝试一下。如果这能帮我解决问题,我会给你回复:)
img.attr("src", "void(0)");
for (var i = 0; i < totalnumberofimages; i++) {
var url = "";
var isMainImage = i == currentDragImg;
var newimg = $("<img class='rotator" + (isMainImage ? " active" : "") + "' src='' />");
newimg.on("error", imgLoadError);
newimg.on("load", imgLoaded);
imgcontainer.append(newimg);
}
function imgLoadError(e) {
var img = $(e.currentTarget);
var imgSrc = img.attr("src");
if (imgSrc.length > 0 && img.width() <= 100) {
setTimeout(function () {
var imgUrl = img.attr("src");
img.attr("src", "");
img.attr("src", imgUrl);
}, 200);
}
}