Javascript是否提供类似于onload的事件侦听器,如果通过innerHTML
将元素添加到DOM会调用该事件侦听器?
我认识<body onload="alert('hi');">...</body>
。但是它仅在整个站点加载时才开始起作用。是否可以通过innerHTML = ...
添加一个元素,该元素立即触发包含它的事件侦听器?
它应该看起来像这样,它必须是这样的内联HTML侦听器:
elementxy.innerHTML = '<b onload="dosth()">....</b>'
答案 0 :(得分:2)
这是一个非常糟糕的破解,但是您可以使用<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
,它也允许任意代码执行。
无论如何,最好完全避免使用内联处理程序。