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;
}
}
}
?>
23 juin 2008 à 11:53
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
28 juil. 2007 à 16:50
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
18 juil. 2007 à 15:37
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,
29 mai 2007 à 17:11
4 mars 2007 à 11:29
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.