繁体   English   中英

在显示给用户之前操​​纵DOM?

[英]Manipulate DOM before it is shown to the user?

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

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

如果我使用的是php或jsp,则页面ui元素似乎已经预渲染,并且浏览器在显示之前不会显示空白屏幕。

在浏览器清除显示的最后一页的内容之前,javascript中是否有钩子可以操纵DOM?

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

@Cipi:我不确定是否可以,但是我可以尝试。 我想这会是同样的问题吗? 我仍然看到它像这样发生:

  1. 用户已经在我的页面之一上。
  2. 用户单击一个链接。
  3. 浏览器开始获取新URL的内容,但是内容只是一个空的html文件,其中只有一个javascript链接。
  4. 页面下载完成后,浏览器将呈现html(这只是一个白屏)。
  5. 现在,javascript开始执行以响应onLoad()事件(?),从而构建UI。
  6. 几毫秒后,就完成了对DOM的操作,并将其最终呈现给用户。

因此我认为您的解决方案将在#5上进行,但是届时浏览器已经在步骤#4上呈现了初始页面的内容?

@Crozin:我现在正在研究DOMContentLoaded,似乎特定于基于壁虎的浏览器,但是有针对ie等的解决方案。是的,我基本上想在浏览器呈现任何内容以供新页面显示之前操纵dom,希望可以做到这一点。 。

谢谢

是的,有两种方法:

  1. 使用DOMContentLoaded事件
  2. 在下面的代码中:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM