2009-06-04 66 views
3

我有一些函数,我打电话,他们需要一些时间(毫秒),但我不希望页面显示,直到这些函数完成。现在,我可以告诉页面加载,然后脚本最终完成。Javascript:有正文onload函数等待脚本完成

现在,我正在调用body onload的函数。

此外,另一个问题我可能是我需要访问div元素HTML内容,我可以做到这一点在我身上的onload功能(的getElementById(“somDiv”)?

这里的工作流程。

  1. 请对的getElementById( 'someDiv')的调用来从页面的元素。

  2. 调用函数someFunc,这个功能是在身体的onload = someFunc()

  3. 等到someFunc完成后

  4. 一旦我的功能完成,就会将页面显示给用户。

回答

5

你可以做的是保持你的页面内容在div最初风格display:none。然后,当你的JavaScript代码完成,更新了div样式为display:block,例如:

<html> 
    <head> 
     ... 
     <style type="text/css"> 
      html, body, #body { 
       height: 100%; 
       width: 100%; 
       padding: 0; 
       margin: 0; 
      } 
      #body { 
       display: none; 
      } 
     </style> 
     <script type="text/javascript"> 
      function myFunc() { 
       ... 
       getElementById('body').style.display = 'block'; 
      } 
     </script> 
    </head> 
    <body onload="myFunc();"> 
     <div id="body> 
      ... 
     </div> 
    </body> 
</html> 

然后鲍勃是你的叔叔:页面看起来有延迟加载脚本完成后,直到。

0

当DOM完成加载时,会触发body的onLoad函数 - 这意味着所有的HTML元素都已经完全加载。所以你的onload函数本身应该假设所有的东西都已经加载并准备好了,因为它的执行是在这些指导下进行的。

1

功能被称为在<body>标签的onLoad事件只发射了DOM加载时(但它不会等待外部依赖,如JavaScript文件和CSS加载),所以你可以肯定的是,当你的someFunc()功能被调用(如果连接到<body>标记的onLoad事件)页面中的元素已被加载。如果你想访问一个在页面中加载的DIV,那么你可以确定它会在调用someFunc()函数时加载。

为了解决您的问题,您可以将您网页的内容包装在DIV中,其中display最初设置为none。然后当页面加载时,你的函数被调用。完成执行后,您可以将包装DIV的display设置为block,以便用户可以看到它。

但是,请确保您让用户意识到该页面正在加载,并且您不会在加载JavaScript时简单地向他们显示空白屏幕。

+0

好主意,很好的描述。由于代码,我给了另一个人答案。 – 2009-06-04 18:06:17