0

我不想等到整个 HTML DOM 准备好。请注意,我不是在谈论动态加载的 HTML 元素。我说的是 HTML 中尚未渲染的元素。

4

2 回答 2

2

三个想法:

  1. 在 HTML 中使用属性,例如onclick="foo()". 这将立即生效。

  2. 您可以<script>在嵌入在 HTML 中的 HTML 元素之后立即放置一个标签,并让该脚本添加事件处理程序。位于脚本之前的所有 DOM 元素都保证被解析并准备就绪。

  3. 您可以通过最初隐藏元素(内联样式规范或 CSS),然后等到它在 DOM 中,运行脚本来安装事件处理程序,然后使对象可见。如果使用visibility: hidden,则文档将正常布局,并且可以visibility: visible在安装事件处理程序后制作内容。

浏览器在对象被解析并在 DOM 中之前不会提供对对象的访问,因此任何想要对其进行操作的脚本都必须在物理上位于 DOM 元素之后,或者必须等待指示 DOM 的事件发生已加载。

浏览器在解析 DOM 元素时不提供事件,但尚不可见,这将为您提供当时对其进行操作的机会,因此您必须使用其中一种其他方法来解决您的问题。

于 2013-11-14T04:31:21.053 回答
0

您必须等到 document.body 呈现。

之后任何事情都可以像这样完成

var ele = document.createElement("div");
ele.onclick = function(e){...};
document.body.appendChild(ele);
于 2013-11-14T04:31:42.733 回答