Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Internet Explorer中更改src值时出现无止境循环_Javascript_Html_Image_Internet Explorer - Fatal编程技术网

Javascript 在Internet Explorer中更改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) {

我对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);
    }
}
给我这个错误:

另一方面,如果我完全删除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=$(“”)
var imgUrl=img.attr(“src”);调校调校(“src”);img.attr(“src”,imgUrl)。@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);    
    }
}