惯用Dojo与YAHOO.util.Event.onContentReady做同样的事情?

时间:2011-10-25 16:10:40

标签: javascript dojo yui

我想在可用时立即开始操作DOM元素,以最大限度地缩短它在屏幕上显示的原始状态。我知道你在YUI中使用YAHOO.util.Event.onContentReady,我很确定你在jQuery中使用bind。我是新的Dojo,我不确定:这样做的“道场方式”是什么?

更新:我特别不想等待加载整个页面(这是一个非常大的数据量;单独的标记可能是MB或更多)。我想立即开始在DOM中查找元素并立即开始处理,而无需等待 ALL 标记下载,解析并插入到DOM中 - 可能需要相对较长的时间。我想开始查看DOM,并在这个小片段出现时立即开始工作。鉴于这种约束,dojo.ready不合适?我的理解是它等待整个DOM准备就绪,类似于onDOMReady

3 个答案:

答案 0 :(得分:3)

在将一块DOM添加到树之后注入功能的最精确方法是使用< script>这要求它在标记中直接放在它下面。它似乎不像onContentReady那样性感,但onContentReady只是一种轮询机制,可能会在domready的同一时间内执行你的回调,无论如何,在相关的DOM子树准备好编写脚本之后很久。

浏览器可以非常快速地组装DOM树。使用诸如onContentReady之类的轮询解决方案,您必须每隔几毫秒执行一次搜索目标元素的代码,从而减慢页面汇编/渲染速度。

我坚持将你的< script>保存在< body>的底部。或者,如果必须,将必须运行的现在该死的代码放在< script>中在所需的标记之后。

我不熟悉dojo的API,所以如果以上内容没有用,我就无法回答你的具体问题。

(编辑以转义前导< in标记以便显示)

答案 1 :(得分:2)

dojo.addOnLoad。还有一个更新的别名dojo.ready。

注意:除了等待DOM准备就绪之外,Add on load还等待确保加载所有必需的模块

答案 2 :(得分:1)

dojo.addOnLoad()就是你想要的。请参阅documentation

请注意,dojo.ready()对于该方法为just an alias

相关问题