“element"形象.非预期时调用的Onerror方法

"image element".onerror method called when not expected

本文关键字:调用 方法 Onerror element quot 形象      更新时间:2023-09-26

相关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()创建image元素。我在第二行设置了对象属性。我期望i3d只在图像不加载时运行,即当网站没有提供图标时。

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

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

谢谢

试试这样做:

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

onerror只需要赋值一个函数,而不是调用函数的结果。您不需要将e传递给函数。如果i3d被调用,this指针将被设置为img(即e)。

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

另外,我希望你只在这里的例子中使用e, cb这样的变量名,而不是在实际代码中使用,因为它们无助于使你的代码非常可读,描述性或可理解。

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

我想你想要这样的东西:

e.onerror=i3d.bind(e)