none
Como carregar o resto de página antes de um métodos? RRS feed

  • Pergunta

  • Olá,

    Eu tenho um script js que roda ao carregar que chama o valor de um input que é o retorno de um método asp.net. O problema é que esse método demora muito para carregar e a página só abre após esse método terminar de carregar. Existe alguma forma de carregar o restante dessa página ante dele acabar de carregar esse método?

    segunda-feira, 19 de março de 2012 21:59

Todas as Respostas

  • Você pode colocar esse método no final do <body>, ai o método será executado após a tela ser carregada.

    ou coloque seu método em:

    window.onload = function() { //seu método }

    ou se você usar jquery:

    $(function(){
         //seu método
    });

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Marcado como Resposta Harley Araujo quarta-feira, 21 de março de 2012 13:43
    • Não Marcado como Resposta Gustavo Binnie terça-feira, 3 de abril de 2012 21:15
    segunda-feira, 19 de março de 2012 23:32
  • Olá Gustavo,

    A resposta do Murilo está correcta mas aqui fica um esclarecimento:

    $(function(){
         //seu método
    });
    
    é o mesmo que 
    
    $(document).ready(function(){
         //seu método
    });

    A questão aqui é que o evento ready ocorre antes da página ter sido completamente interpretada pelo ainda poderá causar lentidão na apresentação da restante página.

    Para evitar este problema eu sugiro usar:

    $(window).load(function(){
         //seu método
    });
    Pois este evento ocorre quando toda a página já foi interpretada e renderizada.

    Nuno Gomes http://nunogomes.net

    • Marcado como Resposta Harley Araujo quarta-feira, 21 de março de 2012 13:43
    • Não Marcado como Resposta Gustavo Binnie terça-feira, 3 de abril de 2012 21:14
    terça-feira, 20 de março de 2012 00:02
  • Olá,

    Eu tenho um script js que roda ao carregar que chama o valor de um input que é o retorno de um método asp.net. O problema é que esse método demora muito para carregar e a página só abre após esse método terminar de carregar. Existe alguma forma de carregar o restante dessa página ante dele acabar de carregar esse método?

    Posta seu code

    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    terça-feira, 20 de março de 2012 11:23
    Moderador
  • Seilor,

    Eu tenho essa declaração no início do <body> e o CreateChart_Por_Periodo() é um método que demanda tempo.

    <input name="dataLoad" id="dataLoad" type="hidden" value="<%=CreateChart_Por_Periodo()%>">

    Após isso, o

    <!-- amline script-->
                                        <script type="text/javascript" src="amline/swfobject.js"></script>
                                        <div id="flashcontent">
                                            <strong>You need to upgrade your Flash Player</strong>
                                        </div>
                                        <script type="text/javascript">
    // <![CDATA[
                                            var chartLoad;
                                            chartLoad = document.getElementById("dataLoad").value;
                                            var so = new SWFObject("amline/amline.swf", "amline", "520", "430", "8", "#e6e5e1");
                                            so.addVariable("path", "amline/");
                                            so.addVariable("settings_file", escape("amline/amline_settings.xml"));  // you can set two or more different settings files here (separated by commas)
                                            so.addVariable("data_file", escape("amline/amline_data.xml"));
                                            so.addVariable("chart_data", chartLoad);                                       // you can pass chart data as a string directly from this file
                                            // 	so.addVariable("chart_settings", "<settings><background><color>#e6e5e1</color></background></settings>");                                   // you can pass chart settings as a string directly from this file
                                            // so.addVariable("additional_chart_settings", "");                        // you can append some chart settings to the loaded ones
                                            // so.addVariable("loading_settings", "LOADING SETTINGS");                 // you can set custom "loading settings" text here
                                            // so.addVariable("loading_data", "LOADING DATA");                         // you can set custom "loading data" text here
                                            so.addVariable("preloader_color", "#999999");
                                            so.write("flashcontent");
    // ]]>
                                        </script>
                                        <!-- end of amline script -->

    No charload desse script ele chama o input dataLoad. Como colocar esse processo em processo async? 
    terça-feira, 3 de abril de 2012 21:14
  • Boa noite Gustavo,

    no HTML tudo o que estiver no <head> é obrigatóriamente carregado antes do <body>. O que você pode fazer é colocar o seu script em uma função dentro do <head>, e executá-la no evento Load do <body>.

    Creio que seja a forma mais simples:

    <html> <head> <script type="text/javascript" src="amline/swfobject.js"></script> <script type="text/javascript"> function renderFlash() { var chartLoad; chartLoad = document.getElementById("dataLoad").value; var so = new SWFObject("amline/amline.swf", "amline", "520", "430", "8", "#e6e5e1"); so.addVariable("path", "amline/"); so.addVariable("settings_file", escape("amline/amline_settings.xml")); so.addVariable("data_file", escape("amline/amline_data.xml")); so.addVariable("chart_data", chartLoad); so.addVariable("preloader_color", "#999999"); so.write("flashcontent"); } </script> </head> <body onload="renderFlash();"> <div id="flashcontent"> <strong>You need to upgrade your Flash Player</strong> </div>
    <input name="dataLoad" id="dataLoad" type="hidden" value="<%=CreateChart_Por_Periodo()%>">
    </body>
    </html>


    Abraços,


    Daniel Cheida de Oliveira


    • Editado Daniel Cheida terça-feira, 3 de abril de 2012 21:52
    • Sugerido como Resposta Daniel Cheida terça-feira, 3 de abril de 2012 21:52
    terça-feira, 3 de abril de 2012 21:51
  • Boas..

    Meu primeiro post e espero que eu posso contribuir... :D

    Uma forma mais aconselhavel neste caso ao invés de você colocar chartLoad = document.getElementById("dataLoad").value

    adicione diretamente a chamada <%=CreateChart_Por_Periodo()%>
    Assim você não irá necessitar esperar carregar toda a página para começar a carregar o conteudo do seu flash.

    []s
    Robson Pratti

    domingo, 8 de abril de 2012 10:01