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

Soyez le premier à donner votre avis sur cette source.

Vue 28 118 fois - Téléchargée 1 876 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

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

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
Messages postés
2
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
28 juillet 2007

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
Messages postés
4
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
27 avril 2012

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,
Messages postés
1
Date d'inscription
mercredi 2 mai 2007
Statut
Membre
Dernière intervention
29 mai 2007

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

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.