Java Script (affichage de modification de page)

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
Golfech64

Java Script (affichage de modification de page)

Message 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
FF_Olivier
Iguane
Messages : 979
Inscription : 09 juil. 2004, 15:41

Message 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 ?
openSUSE 12.2 - FF v24.0 FR - TB v24.0 FR ma config en détails - Décrivez la vôtre ici ;)
userContent.css : modifiez l'apparence et le contenu des sites visités !
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message 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>
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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.
Golfech64

configuration (j'ai honte!)

Message par Golfech64 »

Windows XP sp2 (je ne connais pas grand chose à Linux bien que ça me paraisse puissant, désolé...
Golfech64

essais

Message 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...
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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 :)
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message 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 !
Bienheureux les fêlés car ils laissent passer la lumière...
Golfech64

Merci à tous

Message par Golfech64 »

Merci à tous et à Benoit en particulier.
Le script fonctionne correctement.

Cordialement.
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message 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)
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Google [Bot] et 4 invités