Page 1 sur 1

Java Script (affichage de modification de page)

Publié : 26 déc. 2004, 12:14
par Golfech64
Bonjour

Essayant Firefox en lieu et place d'IE, j'ai remarqué que le petit java script
affichant la dernière date de modification d'une page sur mon site
(www.gueuledebois.org) ne marchait plus.
Voila le texte du script (qui fonctionne avec IE):

<script language=JavaScript><!--
document.write(+
document.lastModified.substring(3,5)+"." +document.lastModified.substring(0,2)+"." +document.lastModified.substring(6,10));
//--></script>

Merci de m'aider à résoudre ce petit problème.

Cordialement

Golfech
gueule@free.fr

Publié : 26 déc. 2004, 12:43
par FF_Olivier
Peut-être :
  • <script language="JavaScript">
  • document.write(+doc... : le + alors qu'il n'y a pas concaténation là ?
  • ...+document.lastModified.substring(0,2)+"." ... : est-ce que ça commence bien à zéro, ce n'est pas plutôt substring(1,2) ?
Ce ne sont que des pistes, je ne connais pas plus que ça le javascript ;) ...

De toute façon, que te dit la console javascript ?

Publié : 26 déc. 2004, 14:51
par SB
Je te propose à la place

Code : Tout sélectionner

<script type="text/javascript">
<!--
var modif = new Date (document.lastModified);
var jour = modif.getDate();
var mois = modif.getMonth() + 1;
var an = modif.getYear();
if(an < 999) an += 1900;
obj = document.getElementsByTagName('body')[0];
para = document.createElement("p");
texte = document.createTextNode(jour + "/" + mois + "/" + an);
para.appendChild(texte);
obj.appendChild(para);
//-->
</script>

Publié : 26 déc. 2004, 17:01
par Benoit
Il y a moyen de faire mieux :)

Code : Tout sélectionner

<script type="text/javascript">
<!--
var modif = new Date (document.lastModified);
var jour = modif.getDate() > 9 ? modif.getDate() : '0'+modif.getDate();
var mois = modif.getMonth() + 1;
if (mois < 10) mois = '0'+mois;

if (obj = document.getElementsByTagName('body')[0]) {
  para = document.createElement("p");
  texte = document.createTextNode(jour + "/" + mois + "/" + modif.getFullYear());
  para.appendChild(texte);
  obj.appendChild(para);
}
//-->
</script>
Le début a été modifié pour ajouter un zéro au jour et au mois lorsqu'il est inférieur à 10, utiliser getFullYear() pour éviter un if et une variable inutile, et enfin vérifier qu'on a bien obtenu un objet avant d'essayer de lui ajouter un paragraphe.

configuration (j'ai honte!)

Publié : 26 déc. 2004, 18:00
par Golfech64
Windows XP sp2 (je ne connais pas grand chose à Linux bien que ça me paraisse puissant, désolé...

essais

Publié : 26 déc. 2004, 18:11
par Golfech64
Merci pour l'aide.
J'ai essayé les 2 derniers scripts, s'ils fonctionnent bien sur Firefox, ils bloquent l'ouverture de la page sur IE6 (du moins en local).
Ces scripts insèrent aussi un saut de paragraphe aprés la phrase
"site modifié le :" que je voudrais garder sur la même ligne que la date mise à jour.
Précision, le script que j'utilise actuellement (voir 1er post) affiche sur Firefox:
"site modifié le: NaN. Su, De"
Je sais, suis chiant...

Publié : 26 déc. 2004, 18:50
par Benoit
Ah oui c'est vrai que ça fait partie du même paragraphe. Je n'avais pas vu que tu avais donné l'adresse de ton site. Le mieux alors est de mettre ça dans le script aussi.

À la place de :

Code : Tout sélectionner

<div align="center">Derni&egrave;re modification de ce site : 
  <script language=JavaScript><!--
document.write(+
document.lastModified.substring(3,5)+"." +document.lastModified.substring(0,2)+"." +document.lastModified.substring(6,10));
//--></script>
  <br>
</div>
Mettre

Code : Tout sélectionner

<div id="lastmod" style="text-align: center;"></div>
et (ou pourquoi pas dans un fichier js externe si tu veux le réutiliser dans d'autres pages)

Code : Tout sélectionner

<script type="text/javascript">
<!--
var modif = new Date (document.lastModified);
var jour = modif.getDate() > 9 ? modif.getDate() : '0'+modif.getDate();
var mois = modif.getMonth() + 1;
if (mois < 10) mois = '0'+mois;

if (obj = document.getElementById("lastmod")) {
  para = document.createElement("p");
  texte = document.createTextNode("Site modifié le : "+jour + "/" + mois + "/" + modif.getFullYear());
  para.appendChild(texte);
  obj.appendChild(para);
}
//-->
</script> 
L'avantage est que si le script foire, la ligne ne sera tout simplement pas affichée et personne n'en saura rien. Fonctionne très bien sous IE, Opera, Mozilla et Firefox chez moi.

Edit: je mets le sujet dans Développement Web parce que ça aura plus de chance de servir à d'autres à-bas :)

Publié : 27 déc. 2004, 09:05
par Mirovinben
Benoit a écrit :je mets le sujet dans Développement Web parce que ça aura plus de chance de servir à d'autres à-bas :)
Effet, ça m'intéresse bougrement. Merci à toi, Benoît !

Merci à tous

Publié : 28 déc. 2004, 16:25
par Golfech64
Merci à tous et à Benoit en particulier.
Le script fonctionne correctement.

Cordialement.

Publié : 16 août 2007, 16:59
par lpgc
bonjour,

j'avais un script équivalent sur ma page ASP et je n'avais pas constaté que la date donnée était celle du jour

autrement dit que la date document.lastModified se modifiait tout les jours malgré que la page n'était pas modifiée

après quelques recherches il semblerait que cette date javascript ne fonctionne pas en ASP ou PHP puisque le document est généré dynamiquement et donc la page vue dans le browser est modifiée au moment de la lecture

Quelques pistes trouvées ...

Code : Tout sélectionner

<!--#config timefmt="%d/%m/%Y - %Hh%M" -->
<!--#echo var="LAST_MODIFIED" -->
n'a pas l'air de fonctionner en local ni sur mon serveur ... n'étant pas spécialiste je n'ai pas trop cherché dans cette direction

EN PHP non plus, si quelqu'un connait la solus ... ce serait bien de la communiquer :D

par contre en ASP j'ai trouvé cette solution qui fonctionne très bien

Code : Tout sélectionner

	Set fs = Server.CreateObject("Scripting.FileSystemObject")
	Set rs = fs.GetFile(Server.MapPath("last_modified.asp"))
	modified = rs.DateLastModified
    response.write(DAY(modified) & " " & MonthName(Month(modified)) & _ 
        " " & YEAR(modified) )
Présentation de la date en anglais ... pour le français on peut utiliser :
session.lcid=1036 OU mettre les mois en array

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)