Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在向用户显示DOM之前对其进行操作?_Javascript - Fatal编程技术网

Javascript 在向用户显示DOM之前对其进行操作?

Javascript 在向用户显示DOM之前对其进行操作?,javascript,Javascript,我对javascript不太熟悉,在向用户显示页面之前,有没有办法操纵DOM 我正在使用GWT,它使您能够通过javascript创建页面元素。这有点方便,但似乎所有javascript代码都是在页面首次显示给用户之后执行的。这会将页面显示为一个空白的白色屏幕,然后所有UI元素都会弹出到屏幕上。在页面之间切换时,效果非常明显 如果我使用的是php或jsp,看起来页面ui元素已经预呈现,浏览器在显示之前不会显示空白的白色屏幕 那么javascript中是否有任何钩子,可以在浏览器清除最后一个显示页

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

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

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

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

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

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

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

    @Crozin:我现在正在研究DOMContentLoaded,似乎是基于gecko的浏览器特有的,但ie等也有解决方案。是的,我基本上想在浏览器将新页面呈现到屏幕之前操作dom,希望这样做


    谢谢

    是的,有两种方法:

  • 使用事件
  • 在以下代码中:

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

    abc

    代码在这里

    def

    id为
    abc
    的元素可用,但id为
    def
    的元素不可用


  • 是的,有两种方法:

  • 使用事件
  • 在以下代码中:

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

    abc

    代码在这里

    def

    id为
    abc
    的元素可用,但id为
    def
    的元素不可用


  • 当您使用PHP时,页面是在服务器上生成的,所以客户端会加载所有已完成的绘图。。。您可以尝试在HTML页面的开头隐藏main DIV元素,如下所示:
    document.getElementById(“main”).style.display=“none”
    然后让所有其他函数和html加载,就在标记put之前:
    document.getElementById(“main”).style.display=“block”以便显示屏幕外渲染的内容。。。你可以用jQuery:<代码> $(“y>主”)。当你使用PHP时,页面是在服务器上生成的,所以客户端会加载所有的绘图工作。。。您可以尝试在HTML页面的开头隐藏main DIV元素,如下所示:
    document.getElementById(“main”).style.display=“none”
    然后让所有其他函数和html加载,就在标记put之前:
    document.getElementById(“main”).style.display=“block”以便显示屏幕外渲染的内容。。。你可以用jQuery:<代码> $(“y\主”)。HIDE()/<代码>和>代码> $(“y>主”)。()/代码> algh。是的,没有运气,我在上面加了一个编辑,我认为浏览器只会渲染空白页面,它不会让屏幕缓冲区中最后一页的内容黯然失色(或者我猜其他所有的PurPIi都很好)。