相关的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中时,每次创建新图像时都会调用它。我需要它仅在未加载图片时调用,因为i3d
将src
更改为通用图片。
由于
答案 0 :(得分:1)
以这种方式尝试:
var e=o3('img');
e.className="c";
e.name="bo_im";
e.onerror=i3d;
e.src=b.href+'favicon.ico';
onerror
只需要分配一个函数,而不是调用函数的结果。您无需将e
传递给该函数。如果调用this
,e
指针将设置为img(i3d
)。
并且,您需要在分配.onerror
之前设置.src
,因为在您分配.src时它可能会被触发。
此外,我希望您只在此处的示例中使用e
,c
和b
等变量名称而不是实际代码,因为它们无法帮助您创建代码非常易读,描述性或可理解性。
答案 1 :(得分:0)
这是因为您将onerror
设置为i3d(e)
的值,而不是将该功能实际绑定到onerror
。
我想你想要这样的东西:
e.onerror=i3d.bind(e)