Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
正在等待HTML中的Javascript函数完成_Javascript_Html - Fatal编程技术网

正在等待HTML中的Javascript函数完成

正在等待HTML中的Javascript函数完成,javascript,html,Javascript,Html,如何确保Javascript函数在进入HTML代码的下一行之前完成 例如:我在main()中有一个Javascript代码,并调用tht,如下所示。在此结束之前,下一行HTML代码(如加载JPEG)将显示在webbrowser中。 是否有任何方法可以确保main()调用完全执行 <script language="JavaScript" type="text/javascript"> main();</script> 和net.Requestor=函数(url、onlo

如何确保Javascript函数在进入HTML代码的下一行之前完成

例如:我在
main()
中有一个Javascript代码,并调用tht,如下所示。在此结束之前,下一行HTML代码(如加载JPEG)将显示在webbrowser中。 是否有任何方法可以确保
main()
调用完全执行

<script language="JavaScript" type="text/javascript"> main();</script>
和net.Requestor=函数(url、onload、onerror、方法、参数、contentType) 在这个范围内,thers是和XMLHTTPRequest(…)

Currenthandler是另一个处理来自requset的响应的函数

 function CurrentHandler()
 {  
    settings = this.req.responseText.split("\n");      
    for(var j=0; j<settings.length-1; j++)  
    {
       var currentST= settings[j].split("=");    
       name = currentST[0];
       value = currentST[1];
       switch(name)    
       {
         case "mainvideostream":  cur_camid = value; break;
          case "codectype": stream = value; break;
        }    
     }   
    mainSection();
  }
函数CurrentHandler()
{  
设置=此.req.responseText.split(“\n”);

对于(var j=0;j如果main中的代码不是异步执行的,则应在DOM加载事件后绑定代码。使用jQuery:

$(document).load(function(){
main();

});
或者不使用jquery,在body标记中:

<body onload="main()">

简短的回答是否定的,在脚本运行时,没有(安全的、符合标准的)方法阻止页面加载

通常,这是通过以下两种方式之一解决的:

  • 通过将CSS
    display
    属性设置为
    none
    ,隐藏页面上不希望加载的元素。在脚本末尾添加一个命令,以重置这些元素的显示属性

  • 将最初不希望加载的元素移动到单独的HTML文件中。在脚本执行结束时,向服务器回拨AJAX以获取第二个文件,并将其加载到主文件中的适当位置


  • 好的,正如其他人所指出的,一般的顺序是加载页面,然后运行javascript。但是,您可以使用ajax来解决这个问题。基本思路如下:

    用空白的页面加载一个JavaScript创建一个空白页面,然后在JavaScript代码块的结尾,通过Ajax。 下面是一些jquery代码,它们可以执行类似的操作:

    <script>
    $(document).load(function(){
    
    //YOUR CODE HERE//
    
    $.ajax({
      type:"GET",
      url:"", // <-- url of the contents of your page here
      dataType:"text",
      success:function(data){
        $(".container").html(data);
      },
      error:function(jqXHR,textStatus,errorThrown){
        $(".container").html("<pre>"+textStatus+"</pre><pre>"+errorThrown+"</pre>");
      }
    });
    </script>
    <body>
    <div class="container"></div>
    </body>
    
    
    $(文档).load(函数(){
    //你的代码在这里//
    $.ajax({
    键入:“获取”,
    
    url:“,//我假设
    main
    函数有一些异步代码。你能显示该函数的代码吗?我认为你想延迟整个页面加载,直到这段javascript完成吗?javascript异步运行,页面异步加载。即使在JS中有一些阻止的方法(一个非常糟糕的主意)你永远无法阻止浏览器同时加载其他内容(用户也不会希望网站尝试并控制它)。问题是:你为什么想要/需要此功能?正如Joseph所指出的,更多的功能可能会有所帮助。一个想法是设置一个标志,使main()当它完成您需要它做的事情时会发生更改,然后检查标志的状态以便继续。很抱歉,我没有像你们这样及时。这是我第一次在这里查询,我真的很惊讶看到这样的响应。再次非常感谢。@Joseph是的,主函数使用异步代码。是否还有其他方法我可以这样做如果没有Ajaxsure,您可以随时使用javascript编写页面,而不是通过ajax将页面内容导入,如:
    $(“.container”).html(“此处为您的页面内容”);
    但我想从长远来看,ajax会更整洁、更易于维护。您为什么要避免使用ajax?是否希望您的代码块影响加载的页面内容?因为这仍然可以在success函数中完成。
    <script>
    $(document).load(function(){
    
    //YOUR CODE HERE//
    
    $.ajax({
      type:"GET",
      url:"", // <-- url of the contents of your page here
      dataType:"text",
      success:function(data){
        $(".container").html(data);
      },
      error:function(jqXHR,textStatus,errorThrown){
        $(".container").html("<pre>"+textStatus+"</pre><pre>"+errorThrown+"</pre>");
      }
    });
    </script>
    <body>
    <div class="container"></div>
    </body>