javascript: comment désigner un autre document que le courant?

javascript: comment désigner un autre document que le courant? - HTML/CSS - Programmation

Marsh Posté le 25-02-2007 à 16:15:04    

Bonjour
 
Je dois impérativement utiliser le javascript dont je ne maitrise pas encore toutes les subtilités pour le problème suivant:
 
J'ai fait une premiere version d'un petit programme en javascipt qui travaille sur
 
document.lastModified.
 
Maintenant que cette premiere version est au point je souhaite la modifier
 
Au lieu de travailler sur la date de mise à jour du document courant, je voudrais dans ce document courant travailler sur la date de mise a jour d'un autre document (une des pages html que ce document courant peut appeller par un lien)
 
comment donc dans mon code javascript inclue dans la page courante, indiquer ou nommer cet autre document et lui coller la methode lastModified et donc récupérer sa date de mise a jour pour la traiter ensuite dans la page appelante?
 
 
Merci de votre aide

Reply

Marsh Posté le 25-02-2007 à 16:15:04   

Reply

Marsh Posté le 25-02-2007 à 18:47:44    

personne ne sait si c'est possible ou non et si oui comment on peut faire?

Reply

Marsh Posté le 25-02-2007 à 19:57:13    

Tu peux "désigner" comme tu dis d'autre documents que ton script a ouvert. Suffit normalement de conserver ce que te renvoit winow.open si mes souvennirs sont bons. Tu peux aussi acceder à opener.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 25-02-2007 à 20:05:02    

voici un exemple qui peut illustrer ce que je cherche a faire:
 
3 pages html dans ces 3 fichiers
racine.html, page1.html, page2.html
 
on lance la page racine qui affiche juste deux liens
le premier "vers le lien 1" qui appelle page1.html
le second "vers le lien 2" qui appele page2.html
 
pourrait ton donc en utilisant lasModified (ou completement autrement) par du javascript, afficher a coté du texte "vers le lien1" et du lien hypertext associé, la date de derniere modification du fichier page1.html
 
(idem pour le lien 2)

Reply

Marsh Posté le 25-02-2007 à 20:12:44    

ca veut dire dwogsi que lorsque que la navigateur interprete le code de la page racine il faut au moment ou il ecrit chaque lien qu'il ouvre et ferme les pages 1 et 2?
 
et conserver quelque chose de cet artifice?
que conserve t'on dans ce cas?  
fais tu allusion a referer qui semble donner des "nom" a chaque document ouvert?

Reply

Marsh Posté le 26-02-2007 à 09:52:44    

Ce que tu dis Dwogsi c'est que pour acceder aux propriétés d'un document en javascript il faut que celui-ci soit "ouvert" sur ton navigateur.
En effet javascript s'execute sur la partie "client", il lui est donc impossible de "lire" des pages sur les serveurs.
 
A mon avis, le plus simple dans ton cas ( si tu n'as vraiment que 2 pages):

  • faire 2 iframes sans display
  • faire un petit bout de js qui va lire le lastModified des pages contenues dans chaque iframe
  • Modifier l'affichage de la page "racine" en fonction des dates remontées.


Et en bonus, si le javascript de tes visiteurs est desactivé, rien ne "plantera".

Reply

Marsh Posté le 26-02-2007 à 10:23:44    

ok je comprends que ce n'est pas possible en javascript sans ouvrir au préalable la page en question
 
J'ai un peu plus que deux pages donc avec des frames ca va pas trop le faire
 
serait il possible de faire une fonction qui prendrait en parametre le nom du fichier a trouver la date et qui renverait cette date de modification elle aurait pour schéma
 
- ouvrir la page
- stoper immédiatement l'interpretation de son contenu
- affecter la variable retour de la fonction à la valeur document.lastModified
-fermer la page
 
lors de l'appel dans la page racine apres affichage de chaque lien, ne faudrait il pas avant noter l'etat du lien pour pouvoir le remettre apres appel de la fonction et ensuite traiter la valeur rendue comme je le souhaite
 
 
dans ce cas le code de la fonction ne serait il pas:
 
function dmaj_fichier (nom_fich)
{
window.open(nom_fich,"lien_i" );
document.stop();
return (document.lastModified);
close();
}
 
merci de me dire si ce code vous semble etre valide et produire le résultat souhaité
 
pour que l'ouverture ne change pas l'état du lien, est il possible de l'affecter a une variable avant? j'ai pas trop lu de choses sur ce sujet?
 
je suppose que si mon problème est un peu délicat avec du javascript qui s'execute coté client, en revanche en php par exemple cela doit surement simplifier le probleme et il est possible me confirmerez vous que je peux a la place de mon code js placer le code php qui fait mon traitement complet. Toutefois si j'exécute les pages en locale avant de les mettre chez l'hebergeur je n'aurai pas ces traitements à l'affichage des pages, y aurait il une solution?

Reply

Marsh Posté le 26-02-2007 à 13:50:51    

je pense pas que le fait que javascript s'exécutant sur la partie cliente soit un problème en soi
 
si tu prends l'objet windows et la methode open, il ya bien manipulation d'informations désignées par les noms des fichiers et une interaction avec la partie serveur
 
le problème se situe plus dans ce qui est possible d'utiliser avec ce langage, les objets qui sont définit et les methodes qui permettent de les manipuler
 
D'apres ce que je comprends de vos interventions et de mes lectures connexes, un document est une sous partie de window et Window n'a pas d'autre alternative que d'etre ouverte.
 
Pas d'autres objets qui répondraient a mon probleme? pas de methode pour manipuler le fichier qui est spécifié dans un lien qui pourtant est une sous partie d'un document?
 
Le code de la fonction que j'ai indiqué vous parait il correcte et répondre a mon problème?
 
Avez vous d'autres idées a me suggérer pour arriver au résultat?

Reply

Marsh Posté le 26-02-2007 à 14:05:37    

la code de ta fonction est incomplet/incorrect mais il pourrait en effet répondre à ta besoin, à la nuance près que:

  • il y aura un popup par lien sur ta page ( même s'il se ferme immédiatement)
  • il suffira d'un anti-popup pour que plus rien ne marche.


Sans utiliser dans langage serveur, la solution des frames reste la moins perturbante mais si tu as effectivement beaucoup de lien ça va partir en choucroute.
 
Pourquoi ne pas te pencher vers l'utilisation d'un langage serveur?

Reply

Marsh Posté le 26-02-2007 à 14:21:31    

en tant que langage serveur: php répond t'il au probleme?
 
pour répondre a ta derniere question
- hebergeur actuel n'en propose pas meme si un changement est à l'etude
- en local ou je mets au point les pages, que je transporte aussi pour démonstrations chez différentes personnes le code php par exemple n'est pas compris et je sais pas trop comment rendre cela possible
 
donc dans un premier temps j'etais parti sur l'idée du javascript dans l'idée ensuite sur tout transformer en php plus tard si les conditions evoluent
 
qui ya t'il qui est incorrect/incomplet dans le code?
il ya 4 liens qui necessitent cette fonction plus des tas d'autres qui n'en n'ont pas besoin, je crois que les frames ne vont pas etre adaptés

Reply

Marsh Posté le 26-02-2007 à 14:21:31   

Reply

Marsh Posté le 26-02-2007 à 19:09:24    

personne ne peut me dire ce qui est incorrecte, dans le code?

Reply

Marsh Posté le 27-02-2007 à 09:33:47    

tintin34 a écrit :

en tant que langage serveur: php répond t'il au probleme?

 
Oui.
 

tintin34 a écrit :

pour répondre a ta derniere question
- hebergeur actuel n'en propose pas meme si un changement est à l'etude


Change d'hébergeur [:spamafote]

tintin34 a écrit :

- en local ou je mets au point les pages, que je transporte aussi pour démonstrations chez différentes personnes le code php par exemple n'est pas compris et je sais pas trop comment rendre cela possible


Tu t'installes apache+php+une bdd sur ton ordi, il y a même des trucs tout packagés. Je te conseille plutôt xampp que easyphp.
 

tintin34 a écrit :

donc dans un premier temps j'etais parti sur l'idée du javascript dans l'idée ensuite sur tout transformer en php plus tard si les conditions evoluent


Oui mais non ... :o
 

tintin34 a écrit :

qui ya t'il qui est incorrect/incomplet dans le code?
il ya 4 liens qui necessitent cette fonction plus des tas d'autres qui n'en n'ont pas besoin, je crois que les frames ne vont pas etre adaptés


Tu es bien conscient que ton code va ouvrir 4 popups? AMHA c'est vraiment une idée cäcä ...

Reply

Marsh Posté le 27-02-2007 à 10:13:51    

oui je suis conscient que 4 fenetres vont s'ouvrir et se fermer puisque la solution avec ce langage est de faire ainsi et qu'aucune autre alternative n'est possible
 
si il ya des antipopups qui bloquent ce script les gens n'auront pas cette fonctionnalité
 
mais comme c'est pas destiné a durer, qu'un changement d'hebergeur est à l'etude et qu'ensuite le php sera utilisé pour ca et pour d'autres choses qui vont venir aussi. D'ici que tout ca se mette en place il y aura une grande partie de mes visiteurs (qui sont plus ou moins fixe et connus) qui se contenteront du javascript en attendant
 
concernant le code tu me dis qu'il est incorrect, sais tu me dire ce qui est mal ecrit?
 
je crois avoir lu dans le livre que j'ai qu'il faudrait plutot ecrire window.stop() plutot que document.stop();
 
sinon j'ai lu dans un autre livre que j'ai emprunté qu'ils parlent aussi de fileModifiedDate je sais pas trop si ca a des comportements similaire a lastModified
 
Sinon merci pour ta suggestion alternative a easyphp poyurquoi la préfères tu a easyphp? merci aussi pour tes interventions
le role de easyphp ou de ta proposition, est il bien de faire tourner sur l'interface de loopback un miniserveur php et mySQL? si je comprends ce que j'en ai lu, pour faire tourner mes pages en local qui continnent du code php il faut lancer ce serveur et ensuite j'appelle mes pages html avec le navigateur comme je le fais déjà actuellement ou bien les apges doivent elles etre lancées par cette application?

Reply

Marsh Posté le 27-02-2007 à 10:46:30    

Concernant ton code:

  • il faut que tu donnes un nom dans ton window.open afin de pouvoir te servir de cette fenêtre plus tard (pour la suite on l'appelera "tintin" ). Je te conseille de te reporter à la doc sur la fonction window.open ( par exemple la)
  • le document.stop il faut le faire sur tintin sinon tu vas le faire sur la fenetre "principale", donc tintin.document.stop() . Il est a noter que je ne connais pas du tout cette fonction, je sais pas ce qu'elle fait.
  • tu peux pas faire un return de cette façon, enfin disons que ça risque pas de faire ce à quoi tu t'attends. Il va plutot falloir utiliser une variable dans ta page principale pour stocker cette valeur. un truc dans le genre:
Code :
  1. var lien1 = tintin1.document.lastModified;


ou alors tu peux directement le metttre à coté de ton lien. Il est encore à noter que je me suis jamais servi de lastModified, donc je sais pas trop ce que ça donne.

  • le close il faut le faire sur tintin sinon c'est la fenêtre principale que tu vas fermer ( donc tintin.close() )


edit:
Et pour xampp vs easyphp, je trouve xampp plus proprement installer que easy, les versions de php/mysql sont plus récentes.
Ah et non ça n'installe pas un miniserveur mais une base de données et un vrai serveur web avec le support des pages php. Ensuite tu peux effectivement accèder à tes pages sur ton serveur web.


Message édité par anapajari le 27-02-2007 à 10:48:12
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed