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è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
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
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)