Мне нужно было запустить некоторый код инициализации после вставки фрагмента html (экземпляра шаблона), и, конечно, у меня не было доступа к коду, который манипулирует шаблоном и модифицирует DOM.Та же идея применима для любой частичной модификации DOM путем вставки html-элемента, обычно <div>
.
. Некоторое время назад я взломал событие onload почти невидимого <img>
, содержащегося в нем.в <div>
, но обнаружил, что пустой стиль в области также будет выполнять:
<div .... >
<style scoped="scoped" onload="dosomethingto(this.parentElement);" > </style>
.....
</div>
Обновление (15 июля 2017 г.) - загрузка <style>
не поддерживается в последней версии IE.Edge поддерживает это, но некоторые пользователи видят в этом другой браузер и придерживаются IE.Элемент <img>
работает лучше во всех браузерах.
<div...>
<img onLoad="dosomthing(this.parentElement);" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />
...
</div>
Чтобы свести к минимуму визуальное воздействие и использование ресурсов изображения, используйте встроенный src, который делает его небольшим и прозрачным.
Один комментарий, который мне нужно сделать для использования <script>
, заключается в том, насколько труднее определить, какой <div>
сценарий находится рядом, особенно в шаблонах, где вы не можете иметь идентичный идентификатор в каждом экземпляре шаблонагенерирует.Я думал, что ответ может быть document.currentScript, но это не всегда поддерживается.Элемент <script>
не может надежно определить свое собственное местоположение DOM;ссылка на «это» указывает на главное окно и не помогает.
Я считаю, что необходимо согласиться на использование элемента <img>
, несмотря на глупость.Это может быть дыра в платформе DOM / javascript, в которой может использоваться подключение.