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/