IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Remplacer le code html d'une page


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Par défaut Remplacer le code html d'une page
    Bonjour à tous,

    J'ai un petit problème de Javascript, je vous explique
    je travaille avec Google Gears en ce moment (pour ceux qui connaissent pas http://gears.google.com/ )

    Et j'aimerais effectuer l'opération suivante:
    Je récupère le code html complet d'une page avec xmlHttprequest
    Je stocke le code html reçu dans une base de données (embarquée sur le poste client mais ca n'a pas d'importance)
    Ensuite j'aimerais à partir d'une fction javascript (déclenchée au click d'un bouton) aller chercher le code html que j'ai stocké dans la BDD (jusque la pas de souci) et remplacer le code de la page (actuelle) par le code que je viens de récupèrer dans la BDD.

    Tout cela fonctionne, et je remplace le code d ema page grace a la méthode suivante:

    document.body.innerHTML = leCodeHTMLVenantDeLaBD;

    Le problème final est que dans cette page de nombreux scripts javascript sont utilisés, mais lorsque je remplace le code html (avec innerhtml) les scripts ne sont pas ... "chargés" ou "exécutés" donc inacessibles.

    Si vous connaissez un moyen d'effectuer cette opération jesuis preneur.
    J'ai essayé de récupérer le code JS avec Xmlhttpreq et de le charger avec document.eval(...) mais cela ne fonctionne pas.

    Merci d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Par défaut
    En d'autre terme, dans leCodeHTMLVenantDeLaBD, il y aurait '[...]<body onload="executerLesScriptsNécssaires()">[...]' et tu voudrais déclencher l'événement load de body par exemple en faisant "document.body.load();"?
    Si c'est le cas, malheureusement, je ne sais pas comment faire. Mais peut être cela peut donner des idées à d'autres.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Par défaut
    dans leCodeHTMLVenantDeLaBD il y a une page html complète
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html>
      <head>
        <script type="text/javascript" src="toto.js"></script>
      </head>
      <body>
        un corps html
      </body>
    </html>
    le code de cette page est donc dans la BD, et quand je mets tout ce code dans document.body.innerHTML.
    J'aimerais pourvoir charger le script toto.js car il n'est apparement pas chargé.

    En esperant que quelqu'un ait deja rencontré ce probleme...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Par défaut
    A mon humble avis, tu n'y arriveras pas. Il n'est, selon moi, pas possible de charger un fichier sur le poste d'un client via javascript sans lui demander son autorisation.
    Il n'est possible de le faire seulement que quand le client demande le chargement de la page.
    Ne peux-tu pas mettre le contenu de toto.js dans le header du html contenu dans la db ?
    Ou de mettre quelques lignes dans ton script côté serveur (php, Asp, jsp... Celui que tu utilises) qui charge dans le header de leCodeHTMLVenantDeLaBD le contenu du fichier toto.js pour ne pas avoir à le garder dans la DB.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    déja si la page appelée comporte des balises html et head c'est compromis et tu t'exposes à des comportements erratiques selon les navigateurs ...

    en effet tu auras à la fin un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <html>
    <head>
    <head>
    <body>
         <html>
         <head>
         </head>
         <body>
         </body>
         <html>
    </body>
    </html>
    Le but c'est uniquement d'ajouter des scripts ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Par défaut
    je comprends que cela ne paraisse pas très clair.
    Au niveau du comportement des <html> imbriqués je n'y avais pas pensé mais c'est vrai que cela risque de se passer comme ca.

    Le but final c'est permettre le stockage de code html dans une base de données embarquée (aucun souci) et d'afficher le code html stocké selon la demande du client.

    Imaginez vous etes sur une page web: La page A
    Des hyperlinks lient la page A aux pages B et C. Le code Html des pages B et C et stocké sous forme de fichier .html sur le serveur web (jusque la schéma classique). Le projet que je dév s'occupe d'aller récupérer le code html contenu dans les pages B et C (pas très difficile jusque la) et le stocke dans la abse de données embarquée mentionnée plus haut.
    La ca se corse un peu, imaginez que le réseau saute, plus de connexion
    Et la les hyperlinks liant la page A aux pages B et C devraient permettre non plus d'accéder aux pages B et C stockées sur le serveur web mais devraient pouvoir remplacer le code html actuel (page A) par le code de la page désirée (B ou C) sachant que ce code est stocké dans la base.

    L'unique problème que j'ai est le remplacement du code de la page actuelle par le code stocké dans la BD tout en conservant les javascripts qui sont nécessaires à l'exécution des pages B et C.

    J'espère ne pas vous avoir trop embrouillé
    Ouach, a mon avis c'est possible, et je ne peux pas bosser côté serveur pour la bonne raison qu'au moment ou je veux effectuer ce remplacement, il est sous entendu que le réseau n'est plus accessible.

    Merci d'avance si vous avez une solution!

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    stocke uniquement le contenu du body et reupère le responseText d'un ajax ...
    c'est ce que je faisias jusqu'a maintenant avant de pouvoir utiliser du php
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Par défaut
    C'est ce que je fais (ajax + remplacement du body) mais j'ai fait quelques erreurs que je suis en train de corriger.
    Je vous tiens au courant.
    Merci pour la réponse

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Pour utiliser les scripts (dans la page mais pas dans le onload) il y aurait une solution en modifiant la procédure de sauvegarde de la page :
    1. récupérer le nom de domaine de la page (ex : www.truc.com)
    2. ajouter cette url dans tous les appels de js (ex : <script language="javascript" src="http://www.truc.com/javascript/mainmenu.js"></script>

    ou enregistrer les scripts sur le serveur (mais s'il y a des appels à des scripts à l'intérieur des js ça ne marchera pas).

    Question : pourquoi veux-tu faire un truc pareil ? Un lien vers la page n'est pas suffisant ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Par défaut
    Petite erreurs corrigées, le body de la page est donc stocké et le innerHtml remplacé par la sélection en base de données (le body stocké)

    Malheureusement les éléments actifs de la page (ie les éléments qui sont censés être réactifs à certains scripts javascript) deviennent inactifs car je pense que les scripts sont déchargés lors de l'opération.

    En réponse à christophe, mes scripts sont déjà chargés avec l'url complète (histoire d'être sur que ca venait pas de là)

    Pour répondre à ta question, je développe une solution déconnectée pour un site web. Site web accessible comme tout site web donc avec les liens classiques, mais lorsque l'utilisateur "perd" la connexion au réseau, le site web lui reste accessible car stocké localement (enfin c'est plus compliqué que ca mais disons qu'il est stocké sur la machine client)
    l'utilisateur doit pouvoir effectuer des actions lorsqu'il est offline (navigation, soumission de formulaires etcetera) et quand il retrouve la connexion, il y a une synchronisation avec le serveur web qui est effectuée.

    D'ou l'utilité de stocker du code pour lui resservir plus tard. Le problème étant que ces pages sont dynamiques donc je stocke le code résultant d'une requête "type" pour lui afficher le résultat quand il sera déconnecté.

    Le plus simple serait un tout AJAX avec des webservices en fournisseur de données. Malheureusement l'existant fait que cette solution n'est pas réalisable.

    merci de l'intérét porté au thread.
    Stay tuned

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    si le but inavoué est de rajouter des scripts sur la page ..;
    ce n'est pas en attribuant un innerHTML avec une balise script dedans que tu y arriveras ...

    jette plutot un oeil dans les contributions, il y a un code pour rajouter une balise script avec src sur un page ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Par défaut
    L'édition de mon post précédent le tien te donenra quelques éléments de réponse.

    je n'ai pas de but inavoué... Je peux fournir quelques morceaux de code pour aider a la compréhension si cela interesse qqun.

Discussions similaires

  1. [HTML] Comment faire apparaitre du code HTML dans une page ?
    Par straitch dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 23/10/2007, 16h45
  2. Réponses: 9
    Dernier message: 23/10/2007, 11h12
  3. recupérer le code Html d'une page Web
    Par comtention dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 05/09/2007, 21h03
  4. Récupération du code HTML d'une page Web
    Par jgavard dans le forum Eclipse Java
    Réponses: 19
    Dernier message: 06/11/2006, 16h54
  5. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 21h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo