Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

horloge atomique


c.junior

Messages recommandés

pourquoi il n'y a pas de script html, js, php, flash, etc.. permettant d'afficher quelques horloges sur la page web avec des heures différentes (paris, NY, Tokyo, etc...) mais avec mise à l'heure sur un NTP et non sur l'horloge système du visiteur (ce qui est insensé puisque si son horloge n'est pas juste alors toute la page web est fausse...)

Lien vers le commentaire
Partager sur d’autres sites

Tout simplement parce que l'objet Date de JavaScript contient la date du système hôte, et n'a aucun lien avec un quelconque autre site distant.

Si la page Web est fausse parce qu'elle se base sur la date du système qui l'affiche, je pense qu'il y a un souci de conception : ce devrait être le serveur qui génère la page et non le client...

Quoiqu'il en soit, c'est faisable en PHP (en supposant que le serveur se mette à l'heure lui-même par ntp), en Flash ou en Java, qui sont capables, eux, d'aller chercher des infos à distance (en Java on peut même implémenter le protocole NTP et aller chercher les infos à la source)

 

Autre possibilité, récupérer le contenu de http://132.163.4.101:14/ (et ça c'est faisable en JavaScript). Seul souci, le temps de génération / transfert de la page va fausser l'exactitude du résultat...

 

Tiens, si j'ai le temps, j'essaie de faire un script qui se connecte là-bas et qui calcule le décalage entre l'horloge locale et celle fournie...

Lien vers le commentaire
Partager sur d’autres sites

Tangui : j'ai trouvé grâce à Google :-P

http://www.bldrdoc.gov/doc-tour/atomic_clock.html

 

-- edit --

Punaise !

Le script ne s'exécute plus après le open() de ma requête... :-/

																										 
 var url = "http://132.163.4.101:14/";																   
 var request = null;																					 
 var response = null;																					

 // EventHandler																						   
 function process_request()																				
 {															   
if (request.readyState == 4) {																		  
  if (request.status == 200) {																		  
	response = request.responseText;																	
	alert(response + "\n" + request);																   
  } else {																							  
	alert("Error: " + request.statusText);															
  }																									 
  request = null;																					   
} else {																								
  alert(request.readyState);																			
}																									   
 }																										 

 // Requête vers la page																				   
 function load_time()																					  
 {																				
// branch for native XMLHttpRequest object															  
if (window.XMLHttpRequest) {																			
  request = new XMLHttpRequest();																	   
  request.onreadystatechange = process_request;														 
  request.open("GET", url, true);																	   
  request.send(null);																				   

// branch for IE/Windows ActiveX version																
} else if (window.ActiveXObject) {																	  
  request = new ActiveXObject("Microsoft.XMLHTTP");													 
  if (request) {																						
	request.onreadystatechange = process_request;													   
	request.open("GET", url, true);																	 
	request.send();																					 
  }																									 
} else {																								
  alert("Error XMLHttpRequest absent.");																
}																									   
 }

Pour ceux que ça interesse, je me suis inspiré de la page d'aide d'Apple : http://developer.apple.com/internet/webcon...xmlhttpreq.html

Lien vers le commentaire
Partager sur d’autres sites

A priori, l'objet XMLHttpRequest n'accepte que des URL relatives, donc pas moyen de contacter un autre serveur Web que celui sur lequel le script est disposé (base de l'URL). Une solution de contournement consisterait à mettre sur le site une page (jsp dans mon cas, php pour la plupart des personnes qui font du Web dynamique) qui va récupérer le contenu qui se trouve sur ce site et qui le refile au script.

L'interêt est assez limité, je passe donc au plan B :

- incrustation d'un iframe et tentative de lecture de son contenu.

(Si le script ne peut pas accéder au site qui donne l'heure, alors on va laisser le navigateur faire le boulot à sa place)

 

-- edit --

OK, le plan B est foireux parce que l'objet <iframe> n'a pas d'attribut document, et quand on lui demande son innerHTML il refile non pas la source du document qu'il a chargé, mais ce qu'il contenait avant changement (pénible, donc)...

 

Je laisse tomber la solution JavaScript. Le plus simple c'est de créer une page PHP (ou JSP ou autre, chacun son truc) qui va ouvrir une connexion HTTP vers ledit serveur (ou mieux, une connexion NTP vers un "vrai" serveur de temps), choper la page, faire la génération d'un objet JavaScript Date contenant la "vraie" heure et laisser au JavaScript le soin de comparer l'objet Date créé en dur dans la page par PHP avec un autre objet Date instancié sur la machine cliente...

Lien vers le commentaire
Partager sur d’autres sites

l'informatique n'est pas infini comme on l'a toujours dit alors ?? :P C'est la 1ère x que ça me tombe dessus...

 

merci KewlCat pour la réponse détaillée et qui ne peut que attirer de l'intérêt.

 

Je suppose qu'il n'y a pas non plus moyen d'inviter le websurfeur à cliquer sur un bouton de la mise en page pour mettre son système à l'heure atomique (il verrait toutes les aiguilles des pays sauter le pas en même temps mais la mission serait accomplie...)

Modifié par c.junior
Lien vers le commentaire
Partager sur d’autres sites

l'informatique n'est pas infini comme on l'a toujours dit alors ?
Quand quelqu'un met des limitations sur certaines choses, c'est un peu normal ;-)

Pour des questions de sécurité je pense que c'est pas plus mal !

 

Je suppose qu'il n'y a pas non plus moyen d'inviter le websurfeur à cliquer sur un bouton de la mise en page pour mettre son système à l'heure atomique

Ce que tu demandes va au-delà de ce qu'il est autorisé de faire avec un navigateur Web. Les scripts qui sont exécutés dedans n'ont accès qu'à leur environnement hôte, c'est à dire le navigateur et le document qui est affiché dedans.

Néanmois, nos amis de Microsoft ayant tout prévu, il est certainement possible de fabriquer un contrôle ActiveX qui ira modifier la date système... Mais là, il va falloir que je laisse la parole aux développeurs Microsoft...

Inconvénient : ça ne marcherait qu'avec IE sous [certaines versions de] Windows, et encore... il faudrait que le websurfer ait autorisé les ActiveX à venir foutre la merde sur son système...

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Bon...

Implémentation de la solution temporaire : je fais générer une page à mon serveur (synchronisé par NTP sur une machine stratum 2, voire 1) ; page qui va contenir l'heure de génération, et utiliser l'heure de fin d'affichage de la page pour comparer.

Comparons la date locale à la date d'une machine synchronisée par NTP.

Le code de la jsp est archi-simple : j'importe java.util.Date et dans la ligne JavaScript "maDateDistante.setUTCMilliseconds( ... );" j'insère <%= new Date().getTime() %> !

Ca permet de comparer l'heure da la machine locale avec l'heure du serveur (à quelques millisecondes près, le temps que la page soit générée, envoyée et affichée)...

 

-- edit --

Ce script ne semble pas fonctionner sous Konqueror (apparemment ce dernier a du mal à incrémenter les millisecondes comme il est prévu dans la norme ECMA-262)...

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...