javascript - 是否有一个 "onload"-类似的事件监听器用于在 Javascript 中添加到 DOM 的新元素?

标签 javascript events listener dom-events innerhtml

Javascript 是否提供类似于 onload 的事件监听器,如果通过 innerHTML 将元素添加到 DOM,则会调用该事件监听器?

我知道<body onload="alert('hi');">...</body> 。但它只在加载整个站点时才起作用。是否可以通过 innerHTML = ... 添加元素?立即触发它包含的事件监听器?

它应该看起来像这样,并且它必须是一个内联 HTML 监听器,如下所示:

elementxy.innerHTML = '<b onload="dosth()">....</b>'

最佳答案

这是一个非常糟糕的黑客,但您可以创建一个不可见的 <img>带有 onerror 的标签属性和 src这会导致错误:

const dosth = () => {
  console.log('dosth');
};

div.innerHTML = '<b>b content<img style="display: none;" onerror="this.remove(); dosth()" src="badsrc"></b>';
<div id="div"></div>

这就是为什么插入不可信的 HTML 是一个坏主意的原因之一 - 即使使用 innerHTML ,它允许执行任意代码。

无论如何,最好完全避免内联处理程序。

关于javascript - 是否有一个 "onload"-类似的事件监听器用于在 Javascript 中添加到 DOM 的新元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725760/

相关文章:

javascript - 检查变量是否初始化为 JavaScript 中的数字的标准方法是什么?

wpf - 当底层 Viewmodel 指示它应该时,如何在 View 触发器上设置 WPF EventTrigger?

javascript - Mootools 不会为 IE7 中的选择触发 "onChange"事件

ruby - 鞋子中的点击事件

java - 如何设置: press and hold listener to checkbox

java - 是否可以根据模型更改动态更新 SWT StyledText 小部件?

javascript - 从 PHP 获取数组数据到 jQuery 进行输出

javascript - ES6 未编译。我正在使用 Babel 和 Webpack

javascript - Extjs 使用 addCls() 改变绘图点的颜色,几乎搞定了

javascript - 单击几个按钮后动态网站更改