在执行我的javascript之前,我怎么能等到网页加载并且所有控件都已填充?

时间:2017-05-23 21:29:42

标签: javascript jquery asp.net webforms

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

基本上我正在升级一个旧的Web表单应用程序,它依赖于很多专有的IE javascript到跨平台工作的东西。其中一个变化是从IE的openModalDialog函数迁移到jQuery UI的模态对话框。

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

我的问题是,将这些值传递回开启者的代码在这些文本框位于DOM之前运行,但之后 其余内容页面已加载。即使我在使用RegisterClientScriptBlock将javascript放到页面底部,在所有内容都加载后,这似乎也会发生。

问题:

  • 当我使用window.opener,并且开启者在iframe中时,开启者是iframe还是打开iFrame的文档?我认为这是前者,但我不确定
  • 如何在填充文本框之前等待,然后将其值返回给开场白?
  • 因为我只是将价值传递回开场白,有没有更好的方法呢?索引更改函数背后的代码只是从数据库中提取文本,插入到那些文本框中。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

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

举一个使用它的简化示例:

<!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 vs document.onload

中被盗的差异的解释
  

<强>的window.onload

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

<强> document.onload

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

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

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