在向用户显示DOM之前操纵DOM?

时间:2010-04-25 15:37:45

标签: javascript

我对javascript不太熟悉,有没有办法在向用户显示页面之前操纵DOM?

我正在使用GWT,它可以让你通过javascript创建页面元素。这很方便,但似乎所有的javascript代码都是在首次向用户显示页面后执行的。这具有将页面显示为空白白色屏幕,然后所有UI元素弹出到屏幕上的效果。在页面之间切换时效果非常明显。

如果我使用的是php或jsp,看起来页面ui元素已经预呈现,浏览器在显示之前不会显示空白屏幕。

那么在javascript中是否有任何钩子我们可以在浏览器清除显示的最后一页内容之前操作DOM?

--------------------------------编辑-------------- --------------------------

@Cipi:我不确定这是否有用,但我可以试试。我认为这会是同样的问题吗?我仍然看到它发生在这样:

  1. 用户已经在我的某个页面上。
  2. 用户点击链接。
  3. 浏览器开始提取新网址的内容,但内容只是一个空的html文件,里面只有一个javascript链接。
  4. 页面完成下载后,浏览器会呈现html(这只是一个白色屏幕)。
  5. 现在javascript开始执行以响应onLoad()事件(?),构建UI。
  6. 几毫秒后,DOM被完成操作,最终呈现给用户。
  7. 所以我认为您的解决方案将在#5上进行,但到那时浏览器已经在步骤#4中呈现了初始页面的内容?

    @Crozin:我现在正在研究DOMContentLoaded,看起来特定于基于gecko的浏览器,但是有等等的解决方案。是的我基本上想要在浏览器呈现任何之前操纵dom屏幕上的新页面,希望可以做到。

    由于

1 个答案:

答案 0 :(得分:1)

是的,有两种方法:

  1. 使用DOMContentLoaded活动
  2. 在以下代码中:

    ....
    <p id="abc">abc</p>
    <script type="text/javascript"> CODE HERE </script>
    <p id="def">def</p>
    

    ID为abc的元素可用,但ID为def的元素不可用。