错误回调方法未触发.是否需要事件侦听器
onerorr callback method does not fire. is an event listener needed?
我使用以下代码根据用户输入动态创建DOM元素(例1)。我还使用php/xhtml在重新加载时创建相同的元素(例2)。
我看到的问题是,我的imagonerror事件只适用于重新加载的版本。这里我使用传统的内联事件注册到i_bm_err
,它工作。
但是对于javascript版本,onerorr回调方法不会触发。
我的问题:我需要添加一个事件监听器吗?如果是,事件侦听器的类型是什么?我尝试添加类型为"error"answers"onerror"的事件监听器,但这不起作用。这让我认为也许添加和事件侦听器不是问题。
示例1function o3(a)
{
return document.createElement(a);
}
var b=o3('a');
b.innerHTML=c[1].value;
b.href=c[2].value;
b.name="a1";
b.className="b";
b.target="_blank";
var e=o3('img');
e.className="c";
e.name="bo_im";
e.src=b.href+'favicon.ico';
e.onerror=function(e){e.src='http://www.archemarks.com/favicon1.ico';};
示例2 PHP/XHTML
function bookmarks()
{
$email = $_SESSION['email'];
$query_return = database::query("SELECT * FROM bo WHERE email='$email' ORDER BY name ASC");
while ($ass_array = mysqli_fetch_assoc($query_return))
{
$fav=$this->fav($ass_array['url']);
echo "<img name='"bo_im'" class='"c'" src='"$fav'"/ onerror='"i_bm_err(this)'"><a target='"_blank'" name = '"a1'" class = '"b'" href = '"$ass_array[url]'">$ass_array[name]</a>";
}
}
Javascript function i_bm_err(a)
{
a.src='http://www.archemarks.com/favicon1.ico';
}
研究:MDN - element.addEventListener
在上面的例子中,在modifyText()中this的值从click事件调用的是对表't'的引用。这是控件中添加处理程序所发生的行为与此相反HTML源代码:
正如@Paul Grime所提到的,在设置src属性之前,您需要附加所有事件(错误,加载等)。
相关文章:
- 如何在for循环中添加事件侦听器
- 未命中服务器发送的事件侦听器
- 如何覆盖原型中的事件侦听器
- 无法将事件侦听器附加到画布
- 如何在d3.js中自定义事件侦听器
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- 事件侦听器未在chrome扩展中的options.js中启动
- IE8更改文本区域上的事件侦听器不工作
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- javascript删除事件侦听器
- 我应该/如何清除mousemove JQuery事件侦听器
- 在JQuery中使用谷歌地图Api事件/侦听器
- 如何使用我的Jquery代码创建委托事件侦听器
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 为什么此事件侦听器不工作
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 在Google Chrome扩展中添加事件侦听器
- SVG元素在转换后会丢失事件侦听器
- jQuery事件侦听器多次启动
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器