2010-04-27 5 views
1

J'ai une page ASP classique qui charge une page ASP.net via un iframe dans la page ASP. Cela fonctionne très bien, sauf qu'il faut un certain temps pour charger la page ASP.net. L'utilisateur est laissé ici avec une expérience défavorable parce que tout ce qu'ils disent est une page blanche vide jusqu'à ce que la page soit finie de charger. Ce que je voudrais faire est charger une première page ASP.net de "chargement" afin qu'au moins l'utilisateur soit montré quelque chose et alors quand la page d'ASP.net est prête charger la page ASP.net correcte dans l'iframe.Est-il possible de modifier un contenu iframe dans une page ASP classique après son chargement?

Est-ce possible? Je pense peut-être avec un peu de javascript mais pas sûr à 100%.

Répondre

2

Il n'y a pas de "page ASP" une fois qu'il touche le navigateur, il n'y a que le résultat HTML.

Vous avez quelques problèmes ici:

1) Si vous mettez quelque chose dans l'Iframe, il sera plus écrit, dès que les nouvelles charges de page. Donc, vous ne pouvez pas utiliser ce qui est dans l'Iframe pour afficher votre message.

2) Comment dire quand l'Iframe avait chargé

Vous devez déterminer l'emplacement et la taille de l'iframe sur votre page. Vous devez positionner un élément par-dessus avec votre message. Modifiez le style d'un élément positionné de manière absolue pour couvrir l'Iframe en utilisant JavaScript. La plupart des gens utiliseraient un framework, tel que jQuery, pour le rendre beaucoup plus facile.

Vous devez ensuite détecter quand Iframe a chargé et masquer cet élément.

Vous pouvez utiliser this code pour déterminer que le Iframe a chargé:

function checkIframeLoading() { 
    // Get a handle to the iframe element 
    var iframe = document.getElementById('testIframe'); 

    // Check if loading is complete 
    if (iframe.document.readyState == 'complete') { 
     // The loading is complete, call the function we want executed once the iframe is loaded 
     functionToCallAfterLoading(); 
     return; 
    } 

    // If we are here, it is not loaded. Set things up so we check the status again in 100 milliseconds 
    window.setTimeout('checkIframeLoading();', 100);  
} 
2

Vous pouvez utiliser JQuery pour modifier une iframe après le chargement de la page.

Another question sur stackoverflow contient déjà un bon exemple:

<html> 
    <head> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script> 
     $(document).ready(function(){ 
      var locations = ["http://webPage1.com", "http://webPage2.com"]; 
      var len = array.length; 
      var iframe = $('#frame'); 
      var i = 0; 
      setInterval(function() { 
        $iframe.attr('src', locations[++i % len]); 
      }, 30000); 
     }); 
    </script> 

Questions connexes