图像替换(JS / JQuery)在IE中工作但不是FF

时间:2011-03-16 15:35:35

标签: javascript jquery image

我已经尝试过多种解决方案来替换损坏的图像(JS和jQuery),并且所有解决方案都与IE完美配合但不在FF中,这是否有原因?

在FF中图像的处理方式是否会导致这种情况不同?

JQuery示例:

$("img").error(function(){
  $(this).unbind("error").attr("src", "nopic.jpg");
});

Javascript示例:(由img标记中的onError事件触发)

function noimage(img){
   img.onerror="";
   img.src="nopic.jpg";
   return true; }

这两个例子在IE中完美运行,但在FF中完全没有。是什么给了什么?

提前致谢!

2 个答案:

答案 0 :(得分:0)

您必须首先绑定error处理程序,然后绑定设置图像的src。因此,在HTML中设置src然后通过JavaScript绑定它是行不通的。

您可以自己证明这一点:http://jsfiddle.net/4Wcnj/2/

HTML:

<img width=500 id=img height=500 src="missing1">

JavaScript的:

// At this point, missing1 is having an error, but no handler set so far

$("#img").error(function() {
    alert("Missing: " + $(this).attr("src"));
});

// The bind handler has been set, now if you set the src wrongly, you
// get the alert
$("img").attr("src", "missing2");

答案 1 :(得分:0)

你在本地测试,不是你,指着一个文件URL吗?

尝试在实际服务器上进行测试,即使它只是本地服务器。我相信Firefox依赖于从图像GET返回的HTTP状态代码来触发错误;如果您从文件:// ... URL加载,则不涉及服务器,因此您不会收到错误。

来自jQuery API docs for error()

  

在本地提供页面时,可能无法正确触发此事件。由于错误依赖于正常的HTTP状态代码,因此如果URL使用文件:protocol。

,通常不会触发它

编辑:正如我们在评论中所讨论的那样,这似乎是因为出于某种原因,您的Intranet服务器没有响应404缺少的资源(或任何其他错误,事情的声音。)

因为Firefox没有收到错误,所以它不会触发错误处理程序,这似乎是理智的行为。

我认为你的问题刚刚成为“我的服务器没有为丢失的内容返回404错误”,但你可能需要多尝试一下才能收集证据然后再询问那个(并且可能在Serverfault而不是SO上询问它) ...)

相关问题