“image element”.onerror方法在不期望时调用

时间:2011-09-05 18:42:26

标签: javascript

相关的JavaScript源代码:

var e = o3('img');
e.className = "c";
e.name = "bo_im";
e.src = b.href + 'favicon.ico';
e.onerror = i3d(e);


function i3d(a) {
  a.src='http://www.archemarks.com/favicon1.ico';
}

怎么样

e.onerror = function(a) { a.src='http://www.archemarks.com/favicon1.ico'; };

o3()创建图像元素。我在第二行设置了对象属性。我希望i3d仅在图像未加载时运行,即当网站没有提供图标时。

当我在图像元素中放置错误(通过内联注册)时,这就是它的工作方式 - 正如我所料。

然而,当我把它放在如上所示的javascript中时,每次创建新图像时都会调用它。我需要它仅在未加载图片时调用,因为i3dsrc更改为通用图片。

由于

2 个答案:

答案 0 :(得分:1)

以这种方式尝试:

var e=o3('img');
e.className="c";
e.name="bo_im";
e.onerror=i3d;
e.src=b.href+'favicon.ico';

onerror只需要分配一个函数,而不是调用函数的结果。您无需将e传递给该函数。如果调用thise指针将设置为img(i3d)。

并且,您需要在分配.onerror之前设置.src,因为在您分配.src时它可能会被触发。

此外,我希望您只在此处的示例中使用ecb等变量名称而不是实际代码,因为它们无法帮助您创建代码非常易读,描述性或可理解性。

答案 1 :(得分:0)

这是因为您将onerror设置为i3d(e)的值,而不是将该功能实际绑定到onerror

我想你想要这样的东西:

e.onerror=i3d.bind(e)