Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/08/2011, 22h30   #1
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 8
Points : 8
Par défaut Récupérer des données dans une iframe

Bonsoir,

Désirant faire un système de mise à jour en Javascript, j'ai décidé de procéder comme ça:

La page "Index.html" contient une variable "version" avec "0.22" (Version actuelle de l'application) comme valeur et un iframe ayant comme source une page web sur un autre domaine avec une variable "derniere_version" avec "0.23" (Dernière version) comme source.
Index.html est censé récupérer la variable "derniere_version" afin de la comparer avec "version" mais je ne parvient pas à accéder aux variables de la frame
Ça fait deux jours que je cherche mais à chaque fois, ça ne réagit pas ou ça me sort "undefined" (Je fait le test avec une alerte).

Oui, je sais: Les frames, c'est mal. Mais je n'ai pas trouvé d'autres solutions pour ce que je veux faire

Aidez-moi, svp
Dev222 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 23h14   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 869
Points : 1 377
Points : 1 377
Citation:
Mais je n'ai pas trouvé d'autres solutions pour ce que je veux faire
Dis nous plus explicitement ce que tu veux faire ?

L'iframe est-elle indispenable ?

Ne peux tu pas simplement utiliser des scripts du genre :

document.createElement('script');

?

Autrement, effectivement, il n'y a aucun moyen d'échanger des données via iframes de domaines différents pour des raisons de sécurité.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 23h32   #3
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 8
Points : 8
Citation:
Dis nous plus explicitement ce que tu veux faire ?
Je voudrais comparer la variable "version", qui est dans index.html, à la variable "derniere_version" qui est dans une page web sur un autre domaine.

Citation:
L'iframe est-elle indispensable ?
Non.

Je vais faire un schéma parce que j'ai du mal à expliquer
Dev222 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 00h35   #4
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 869
Points : 1 377
Points : 1 377
En attendant ton schéma, peux-tu déjà nous dire si les pages des 2 cotés t'appartiennent ou si tu veux juste pomper une site ?

Si elles t'appartiennent, la solution de créer un fichier javascript et de le charger sur le second domaine me semble une des meilleures solutions.

Si tu veux pomper(déjà c'est mal et ensuite) je te conseillerai de passer par une solution style proxy php. (je ne suis pas pro php donc je ne te donnerai pas les détails mais tu trouveras aisément ces tutos sur le web.)
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 01h30   #5
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 795
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 795
Points : 5 119
Points : 5 119
bonjour,

des pages HTML sur des domaines différents ne peuvent en aucun cas s'échanger des informations.
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 12h39   #6
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 8
Points : 8
@WillPower: Non, ce domaine m'appartient et je l'ai payé. Index.html doit être en local et la page en ligne doit contenir la dernière version (Que je met à jour manuellement)
Donc les deux pages m'appartiennent.

@Auteur: Dans ce cas-là, est-ce possible de récupérer le contenu d'une page (code source ou pas) ?

Voici le schéma:
Dev222 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 13h05   #7
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 869
Points : 1 377
Points : 1 377
essaye avec les scripts :

coté client :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
window.version = "2.22";
 
function addScript(url){
  var script = document.createElement('script');
  script.src = url;
  return document.getElementsByTagName('head')[0].appendChild(script);
}
 
function removeScript(script){ 
  document.getElementsByTagName('head')[0].removeChild(script); 
}
 
function updatePage(data){
  document.getElementById('elem_html1').innerHTML = data.elem1;
  document.getElementById('elem_html2').innerHTML = data.elem2;
  //...
}
 
function checkVersion(){
  var time = (new Date()).getTime();
  window["s"+time] = addScript("http://www.monsite.com/page.php?version=" + version + "&time=" + time);
}
 
// mise à jour toutes les 5 minutes
setInterval(checkVersion,1000*60*5);
coté serveur :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  header("Content-type: text/javascript");
  $version = 3.6;
  $data = "{elem1:'ceci est le titre', elem2:'ceci est un contenu'}";
  $client_version = intval($_GET['version']);
  $script_time = intval($_GET['time']);
  if($version > $client_version){
    echo "window.version = '".$version."' ; ";
    echo "updatePage('".data."');";
  }
  echo "removeScript('s".$script_time."');";
?>


nb: je l'ai écris à l'aveugle sans tester, il est donc possible que certains trucs comportent des erreurs.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 13h32   #8
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 8
Points : 8
Merci, je vais tester

EDIT: Ca ne fonctionne pas. J'ai collé proprement les deux codes dans index.html et up.php, j'ai juste modifié l'adresse url dans l'interval, mais rien :/
Dev222 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 14h23   #9
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 795
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 795
Points : 5 119
Points : 5 119
Citation:
Envoyé par Dev222 Voir le message
@Auteur: Dans ce cas-là, est-ce possible de récupérer le contenu d'une page (code source ou pas) ?
Deux domaines différents = aucune communication possible au niveau client. Tu ne peux rien faire ni récupérer le code HTML de la page affichée dans la seconde iframe.

Par contre (et c'est à vérifier) peut-être que les deux serveurs peuvent s'échanger des informations.
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 14h25   #10
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 8
Points : 8
Ah ok, merci quand même et bonne journée
Dev222 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 14h58   #11
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 869
Points : 1 377
Points : 1 377
Voila, j'ai corrigé les erreurs et testé cette fois.

LOCAL :

Code html :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html><head><script type=text/javascript>
var url = "http://www.hommk.tk/poker/page.php";
window.version = "2.22";
 
function addScript(url){
  var script = document.createElement('script');
  script.src = url;
  return document.getElementsByTagName('head')[0].appendChild(script);
}
 
function removeScript(script){ 
  document.getElementsByTagName('head')[0].removeChild(window[script]); 
}
 
function updatePage(data){
  document.getElementById('elem_html1').innerHTML = data.elem1;
  document.getElementById('elem_html2').innerHTML = data.elem2;
  //...
}
 
function checkVersion(){
  var t = (new Date()).getTime();
  window["s"+t] = addScript(url+"?version=" + version + "&t=" + t);
}
 
// mise à jour toutes les 5 minutes
setInterval(checkVersion,1000*5);
 
</script></head><body>
 
<div id=elem_html1 >hello</div>
<div id=elem_html2 >hello</div>
 
</body></html>

SERVEUR :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  header("Content-type: text/javascript");
  $version = floatval(3.6);
  $client_version = floatval($_GET['version']);
  $script_time = $_GET['t'];
  $data = "{elem1:'ceci est le titre', elem2:'ceci est un contenu'}";
  if($version > $client_version){
    echo "window.version = '".$version."' ; ";
    echo 'updatePage('.$data.');';
  }
  echo "removeScript('s".$script_time."');";
?>
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 21h00   #12
Invité régulier
 
Inscription : janvier 2011
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 27
Points : 8
Points : 8
Merci, c'est résolu !
Dev222 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h58.


 
 
 
 
Partenaires

Hébergement Web