繁体   English   中英

在执行我的JavaScript之前,如何等待网页加载完毕并填充所有控件?

[英]How can I wait until a web page has loaded and all controls have been populated before executing my javascript?

好的,所以我知道问题听起来像是我又是一个不知道document.ready如何工作的人,但这有点不同。

基本上,我是将一个依赖许多专有IE javascript的旧Web表单应用程序升级到可以在跨平台上工作的东西。 更改之一是从IE的openModalDialog函数迁移到jQuery UI的模式对话框。

这意味着我在一个iframe网页中,单击一个按钮触发另一个用户可以选择选项的网页上的“ window.open”。 当用户选择一个选项时,将触发索引更改事件,从而在对话框中填充隐藏的文本框。 这些文本框的内容应该传递回“ window.opener”并传递到该页面上的文本框。

我的问题是,这些值传递回首战代码运行这些文本框都在DOM 之前 ,但在这个页面中的内容剩下的已被加载。 即使在加载完所有内容后,即使我使用RegisterClientScriptBlock将javascript放到页面底部,这似乎也会发生。

问题:

  • 当我使用window.opener且打开器位于iframe中时,打开器是iframe还是打开iFrame的文档? 我认为是前者,但我不确定
  • 我如何等到文本框填充后再将其值返回给打开器?
  • 因为我只是将价值传递回了开门红,还有更好的方法吗? 更改索引功能后的代码只是从数据库中提取文本,然后将其插入这些文本框中。

任何帮助都会很棒。

要回答第二个问题,您应该可以使用onLoad属性。 文档在这里

给出使用中过于简单的示例:

<!doctype html>
<html>
  <head>
    <title>onload test</title>
    <script>
      function load() {
        console.log("load event detected!");
      }
      window.onload = load;
    </script>
    <script>
      const load = () => {
        console.log("load event detected!");
      } 
      window.onload = load; 
    </script>
  </head>
  <body>
    <p>The load event fires when the document has finished loading!</p>
  </body>
</html>

您可能还考虑使用document.onLoad。 这是从window.onload与document.onload窃取的差异的解释:

在window.onload

  • 默认情况下,加载整个页面(包括其内容(图像,css,脚本等)时,将触发该事件
  • 在某些浏览器中,它现在承担了document.onload的角色,并在DOM准备就绪时触发。

document.onload

  • 当DOM准备就绪时可以调用它,可以在加载图像和其他外部内容之前。

为了进一步扩展readyonload之间的区别,在加载HTML文档之后会发生ready事件,而在还加载了所有内容(例如图像)时会在稍后发生onload事件。

onload事件是DOM中的标准事件,而ready事件特定于jQuery。 ready事件的目的是,它应该在文档加载后尽早发生,从而使向页面中的元素添加功能的代码不必等待所有内容加载。

暂无
暂无

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

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