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

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

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.