Rafraichissement continue

Signaler
Messages postés
10
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
10 septembre 2007
-
Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
-
Bonjour,

Bon, comment expliquer???


Tout d'abord je vais expliquer ce que je cherche à réaliser.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>







Je veux réaliser un script qui me permet de rafraichir en continu un page du web dans une autre page html.
l'url de la page à rafraichir est donnée dans un champ d'un formulaire d'une frame A et il elle est affichée dans une frame B.
De plus dans le formulaire on trouve deux boutons, le 1er permet de lancer le rafraichissement en continu de la page et le 2ème permet d'arrêter ce rafraichissement.







J'ai déja réaliser un premier script qui fonction très bien mais je n'en suis pas encore satisfait. Il s’articule sur 3 page html :
- page1 : divise le document en 2 frames
- page2 : contien le script et le formulaire
- page3 : page vide qui initialise la 2eme frame







Le fonctionnement du script :
Je clic sur le 1er bouton pour démarrer, ce qui lance un setinterval qui lance, toute les seconde, une fonction qui recharge la page à rafraichir dans la 2eme frame.
Je clic sur le 2ème bouton pour faire un clearInterval.









VOICI MON PROBLEME :

Suivant le temps de charge de la page, l’affichage saute clignote.





J’ai bien une idée mais elle me semble iréalisable :
Créer un système de 2 calques ou iframes où quand le 1er element est au premier plan le 2ème charge la page à l’arrière plan. Quand le 2ème a fini de charger il passe au premier plan et le 1er élément passe à l’arrière plan pour recharger à nouveau la page.



Je pense que cet algorythme doit fonctionner mais étant novice en JavaScript je ne voi pas comment le réaliser. Après une demi journée de recherche sur diférent forum et dans mes livre, je n'ai toujour pas d'idée

HELP!!!




SI qq'un a une idée je prend. merci d'avance.






#include <<fzed51>></fzed51>

10 réponses

Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Petite question : la page que tu recharges en continu elle provient de ton site ou d'un site qui ne t'appartient pas ?

Nickadele
Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Pourrais-tu nous donne une adresse de ta page pour voir le fonctionnement réel... car la je t'avoue que je ne comprends pas du tout ce que tu veux faire

-- The Rubik's Man --
Messages postés
10
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
10 septembre 2007

@nickadele : La page à afficher fait partie d'un autre site.



@
rubiks10
 : La page n'est pas encore en ligne. dès quelle y est je post l'adresse.



#include <<fzed51>></fzed51>
Messages postés
10
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
10 septembre 2007

voilà l'adresse de ma page qui fonctionne.
penssez a mêtre http:// devant l'adresse.

http://www.chez.com/fzed51surlenet/

#include <<fzed51>></fzed51>
Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Ok...
Et concrètement c'est quoi l'utilité?? donne nous un exemple pour qu'on puisse réfléchir
merci

-- The Rubik's Man --
Messages postés
10
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
10 septembre 2007

@
rubiks10
 : Tout simplement suivre une enchère sur ebay.

Est ce qu'il est possible de charger un page dans la cache et de l'afficher entière une fois terminée de chargée voir même de l'afficher en arrière plan est une fois complète la passer au premier plan?




#include <<fzed51>></fzed51>
Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Bon je t'ai fais un exemple avec 2 fichiers. Tout est géré par javascript et je pense pas que l'on puisse faire mieux car faut quand même dire que ce que tu veux faire est assez particulier et pas ordinaire, enfin bon.

Voila le code :

fichier index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<html>
 <head>
  <title>un document avec un jeu d'encadrement simple</title>
  <script type= "text/javascript">
   var current_index = 2;
   var control = 0;
   function switch_frame() {
    if (control < 3) {
     control++;
     return;
    }
    if (current_index == 2) {
     parent.document.getElementById('mysite').rows = '20%,0px,80%';
     current_index = 1;
    }
    else {
     parent.document.getElementById('mysite').rows = '20%,80%,0px';
     current_index = 2;
    }
   }
  </script>
 </head>
 <frameset name="mysite" id="mysite" rows="20%,80%,0px">
  <frame id="frame_haut" name="frame_haut" src="haut.html">  
  <frame id="frame_bas1" frameborder="0" name="frame_bas1" onload="switch_frame()" noresize>
  <frame id="frame_bas2" frameborder="0" name="frame_bas2" onload="switch_frame()" noresize>
 </frameset>
</html>

fichier haut.html
<html> 
 <head>
  <script type ="text/javascript">
   var id_time = 0;
   var current_address = '';
   var current_index = 1;
   
   function changeURL() {
    eval("var current_frame = parent.frame_bas"+current_index);
    current_frame.frames.location = current_address;    current_index current_index 1 ? 2 : 1;
   }
   
   function Launch() {
    eval("var current_frame = parent.frame_bas"+current_index);    current_index current_index 1 ? 2 : 1;
    current_address = parent.frame_haut.document.getElementById('adresse').value;
    
    current_frame.frames.location = current_address;
    id_time = setInterval('changeURL()',6000);
   }
   
   function Stop() {
    clearInterval(id_time);
    start = 0;
   }
  </script>
 </head>
 
  <center>
   
   
   
  </center>
 
</html>

Voila je pense que c'est ce que tu voulais.

bonne prog
@+

-- The Rubik's Man --
Messages postés
10
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
10 septembre 2007

Le code ci dessus fonctionne très bien en local. avec quelque modifs j'ai exactement ce que je voulais.
Lorsque je met à jour le site j'obtien une erreure avec : 
     parent.document.getElementById('mysite').rows = '20%,0px,80%';
 est ce que qq'un peut me dire pourquoi et y a t'il une solution pour affecter rows sans passer par parent.document.getElementById?

mes hebergeurs sont : chez-alice.fr et multimania.
peut être est-ce du la leur protection de multiframe?????


#include <<fzed51>></fzed51>
Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Peux-tu nous donner exactement l'erreur que cela te donne ??

Je sais que l'on ne peut pas accéder aux propriétés ' location ' ou ' location.href  ' d'une frame lorsque les frames contiennent des pages n'appartenant pas au meme domaine pour des raisons de sécurité mais bon là ca a rien avoir les dimensions des cadres...

Surtout que si ca marche en local c'est que c'est ok donc peut être que ton hebergeur a mis des restrictions mais c'est peu probable surtout qu'il ne peut pas gérer le fait qu'on accede à ces propriétés...

J'attend que tu donnes l'erreur exacte pour mieux comprendre

@+

-- The Rubik's Man --
Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
6 juin 2007
2
Bon je viens d'aller voir ton site ou tu appliques le code que je t'ai donné.

Et c'est normal que ca ne marche pas... car au départ tu voulais et c'était le sujet de ton post qu'on ne voit pas le raffraichissement donc pour cela je t'ai fais un code qui permet que dès que la frame invisible est chargée de l'afficher.

Et toi apparemment tu a tout changé donc d'une part cela ne permet plus de masquer le chargement donc ca clignote comme avant et d'une autre part tu as bougé la fonction switch_frame , tu l'as mise dans la page de la frame du haut... donc évidemment que plus rien ne marche...

Et en local je ne vois pas comment cela peut marcher ... c'est un semblant de fonctionnement alors ...

Donc recommence en gardant mon code et tu véras que ca marchera....

-- The Rubik's Man --