Rafraîchir le contenu d'une page, ou d'un calque sans tic (bruit), en passant par php => compatible navigateurs recents

3/5 (59 avis)

Vue 28 299 fois - Téléchargée 1 894 fois

Description

Note : CE SCRIPT EST PERIME, pour effectuer un rafraichissement, la solution est d'utiliser de l'ajax.

C'est une classe php utilisant javascript. Elle permet de changer le contenu d'une page sans changer de page, et sans entendre de "tic" (bruit) sur internet explorer. Le script fonctionne sur tous les navigateurs récents prenant en charge javascript. Il est valide xhtml 1.0 transitional.

voici un lien de démo : http://dnrefresh.krobiz.com
et les fichiers d'exemple à télécharger : http://dnrefresh.krobiz.com/dnrefresh.zip

le code qui suit est celui de la classe php.

Source / Exemple :


<?php

/*
Author : docteur.night
email : docteurnight@hotmail.com

  • /
class dnrefresh { var $output; var $loop_out; var $refresh_id; function dnrefresh() { $this->output = ''; $this->loop_out = ''; $this->refresh_id = array(); $this->files_names = array(); return true; } function refresh_start($expect_time = 200) { $expect_time = intval($expect_time); $this->output .= '<script type="text/javascript">' . "\n" . '<!--' . "\n" . 'function refresh_loop(refresh_id)' . "\n" . '{' . "\n" . ' eval(\'if ( content_to_refresh_\' + refresh_id + \' != null ) { eval(content_to_refresh_\' + refresh_id + \'); content_to_refresh_\' + refresh_id + \' = null; }\');' . "\n" . ' setTimeout(\'refresh_loop(\' + refresh_id + \');\', ' . $expect_time . ');' . "\n" . '}' . "\n\n" . 'function refresh_action(refresh_id, file_name, refresh_time)' . "\n" . '{' . "\n" . ' Stamp = new Date();' . "\n" . ' document.getElementById(\'scripttoup\' + refresh_id).innerHTML = \'<iframe src="\' + file_name + \'time=\' + Stamp.getMinutes() + Stamp.getSeconds() + Stamp.getDay() + \'&refresh_id=\' + refresh_id + \'"></\' + \'iframe>\';' . "\n\n" . ' if ( refresh_time )' . "\n" . ' {' . "\n" . ' setTimeout(\'refresh_action(\' + refresh_id + \', \\\'\' + file_name + \'\\\', \' + refresh_time + \')\', refresh_time);' . "\n" . ' }' . "\n" . '}' . "\n\n"; } function refresh_add($file_name, $refresh_time = false, $refresh_id) { if ( substr_count($file_name, '?') > 0 ) { $file_name .= '&'; } else { $file_name .= '?'; } $file_name = str_replace(array('\\', '\''), array('\\\\', '\\\''), $file_name); $refresh_id = intval($refresh_id); while ( in_array($refresh_id, $this->refresh_id) ) { $refresh_id++; } $this->refresh_id[] = $refresh_id; $this->files_names[$refresh_id] = $file_name; $this->loop_out .= 'content_to_refresh_' . $refresh_id . ' = null; ' . (( !is_numeric($refresh_time) ) ? '' : 'refresh_action(' . $refresh_id . ', \'' . $file_name . '\', ' . $refresh_time . '); ' ) . 'refresh_loop(' . $refresh_id . '); '; return true; } function refresh_display($return = false) { $this->output .= 'window.onload = function() { ' . $this->loop_out . ' };' . "\n" . '//-->' . "\n" . '</script>' . "\n"; foreach ( $this->refresh_id as $value ) { $this->output .= '<div id="scripttoup' . $value . '" style="position:absolute;top:-9999px;left:-9999px;width:0px;height:0px;overflow:hidden"></div>' . "\n"; } if ( $return ) { return $this->output; } else { echo $this->output; } } function refresh_call($refresh_id, $return = false) { $output = 'refresh_action(' . $refresh_id . ', \'' . $this->files_names[$refresh_id] . '\');'; if ( $return ) { return $output; } else { echo $output; } } function refresh_update($refresh_id, $content, $element_id = false, $return = false) { $content = str_replace(array('\\', '\''), array('\\\\', '\\\''), $content); if ( $element_id ) { $content = 'document.getElementById(\'' . str_replace(array('\\', '\''), array('\\\\', '\\\''), $element_id) . '\').innerHTML = \'' . $content . '\''; } $this->output = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Style-Type" content="text/css" /><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><title></title></head><body><script type="text/javascript">parent.content_to_refresh_' . $refresh_id . ' = \'' . $content . '\';</script></body></html>'; header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); if ( $return ) { return $this->output; } else { echo $this->output; } } } ?>

Codes Sources

A voir également

Ajouter un commentaire Commentaires
bestouinouin
Messages postés
18
Date d'inscription
mercredi 13 août 2003
Statut
Membre
Dernière intervention
4 janvier 2007

23 juin 2008 à 11:53
Bonjour,
Je viens de télécharger le script avec l'exemple...
Je mets ca dans un dossier, je lance en testant sous EasyPhp 1.8...
Et... ca marche pas ? aucun rafraichissement je vois toujours mon contenu1 et contenu2

Une idée de mon erreur ?

Merci

Seb
papend
Messages postés
2
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
28 juillet 2007

28 juil. 2007 à 16:50
Bonjour

Bravo pour le script
Mon souci est que j'utilise une balise marquee sur une page qui se rafraichit et je veux eviter que le rafraichissement ait lieu au moment ou le texte defile sur la bande.

Merci d'avance
paulux1
Messages postés
4
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
27 avril 2012

18 juil. 2007 à 15:37
Bonjour,

Je souhaiterais intégrer ce script pour le faire fonctionner sur mon site.

Je suis en php5. J'ai en effet une variable qui contient un fichier xml que je parse. Cette variable se compose de plusieurs blocs xml.
Il faut environ 1 minute pour que le chargement de cette variable soit complet.
Je souhaite donc rafraîchir ma page toutes les 4 secondes pour afficher les résultats intermédiaires dont le code html est écrit sous la forme du table contenue dans ($Result)

Comment puis-je faire pour rafraîchir le contenu de $Result dans ma page ?

Merci,
nutzs
Messages postés
1
Date d'inscription
mercredi 2 mai 2007
Statut
Membre
Dernière intervention
29 mai 2007

29 mai 2007 à 17:11
Oui, en même temps sur asp-php.net elle est du meme auteur la source alors je vois pas vraiment le probleme.
cs_VLN
Messages postés
43
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
19 mai 2006

4 mars 2007 à 11:29
Lol source asp-php.net ;)
Afficher les 59 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.