7

我有这样的代码

<a class="img" href="LINK">
  <img src="GOOD_IMG" title="title" onerror="src='ERROR_IMG'">
</a>

在 FireFox 和 chrome 中,它的行为与您期望的一样(如果存在则显示 GOOD_IMG,如果不存在则显示 ERROR_IMG),但在 IE (9) 中,它始终显示 ERROR_IMG。

如果我在 IE 中调试并即时设置onerror其他内容,例如

onerror="alert('error')" 

然后出现警告消息并显示正确的图像。

什么可能导致 IEonerror在其他浏览器没有问题的情况下激活?

有什么办法可以找出是什么原因造成的onerror

谢谢

4

3 回答 3

3

我也经历过类似的症状。在我的情况下,通过将 'empty' 值放入srcat发生了 'onerror' <img>

问题:

html

<img src="" onerror="this.src='ERROR_IMG'">

js

$('._profile_image:first').attr('src', IMAGE_URL);

解决方案:

<img onerror="this.src='ERROR_IMG'">
于 2017-01-17T10:06:57.793 回答
1

你可以这样试试。首先,您必须编写一个 JS 函数来检查图像是否存在(AJAX 调用返回是否存在)并相应地更改图像。

其次,您在 onerror 事件上调用该函数

function imgError(imageControl, path) {        
            $.ajax({
                type: "POST",
                async: true,
                url: "test.aspx/CheckImageExists",
                data: "{'imagePath':" + JSON.stringify(path) + "}",
                contentType: "application/json; charset=utf-8",
                success: function (response) {
                    if (response.d == "exists") {
                        imageControl.src = path;
                    }
                    else {
                        imageControl.src = 'img/errorimg.jpg';
                    }
                }
            });
            return true;
        }

<img src="<%# "admin/"+ Eval("imagath") %>" onerror="imgError(this,'<%# "admin/"+ Eval("imagath") %>')">

C#
 [WebMethod]       
        public static string CheckImageExists(string imagePath)
        {
            string fullPath = HttpRuntime.AppDomainAppPath.ToString() + imagePath;
            fullPath=fullPath.Replace('/','\\');
            return File.Exists(fullPath) ? "exists" : "notexists";           
        }
于 2014-06-27T08:14:01.673 回答
0

改成:

onerror = function() { 
    alert('error'); 
}; 
于 2014-06-10T13:25:24.850 回答