javascript : lire le contenu d'une page

javascript : lire le contenu d'une page - HTML/CSS - Programmation

Marsh Posté le 14-01-2006 à 18:28:49    

Bonjour,
 
je vous soumets mon problème : via javascript, je sais lire la valeur d'un élément comme par exemple une zone de texte, mais comment lire le contenu de la page tout simplement ? Hors formulaire donc ? C'est possible ?
 
 
Merci par avance
 
@+
Celiphane

Reply

Marsh Posté le 14-01-2006 à 18:28:49   

Reply

Marsh Posté le 14-01-2006 à 19:20:17    

mégné [:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 14-01-2006 à 20:09:05    

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title></title>
  5. <script type="text/javascript">
  6. function jeuboiboite(){
  7.  var maboite = document.getElementById("boiboite" );
  8.  var boiboitetowrite = document.getElementById("boiboitetowrite" );
  9.  boiboitetowrite.innerHTML = maboite.innerHTML;
  10. }
  11. window.onload = jeuboiboite;
  12. </script>
  13. </head>
  14. <body>
  15. <p id="boiboite">
  16. texte <b>qui</b> va aller d'un bout à l'autre
  17. </p>
  18. <p id="boiboitetowrite">
  19. </p>
  20. </body>
  21. </html>


 

Reply

Marsh Posté le 16-01-2006 à 12:39:40    

Gatsu35 >

Code :
  1. function total(){ return document.InnerHTML}

, ca ferait pas tout aussi bien ce qu'il cherche sans modification de la page html?

Reply

Marsh Posté le 16-01-2006 à 12:46:40    

omega2 a écrit :

Gatsu35 >

Code :
  1. function total(){ return document.InnerHTML}

, ca ferait pas tout aussi bien ce qu'il cherche sans modification de la page html?


Ca retourne pas le texte de la page, ça retourne tout le code de la page :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 16-01-2006 à 12:53:31    

InnerText alors si elle veut vraiment que le texte, mais me semble pas que ca soit compatible firefox 1.0 et alors il faut s'amuser à parcourir toute l'arborescence de la page pour chercher le texte de chacun.
Et si elle veut que le contenu du body, suffit de chercher l'élément dont le type est <body>.
 
Mais bon, pour moi, c'était le code html de la page qu'était demandé et pas juste le texte affiché sans tenir compte de la mise en page.

Reply

Marsh Posté le 16-01-2006 à 13:47:39    

ben oui il suffit aussi de recuperer le ou les childnodes qui compose le texte sous FF mais ca devient reloud :/
 
ou alors recuperer avec innerHTML et utiliser des regexp pour virer les balises.
 
innerText ça n'existe que dans l'esprit de microsoft

Reply

Marsh Posté le 16-01-2006 à 16:19:36    

Bonjour,
 
merci de votre aide.
Pour préciser, je recherche en effet à lire tout le code complet ! Pas juste un paragraphe ou un bout de texte quelque part.
 
J'ai donc essayé avec innertext comme conseillé plus haut mais ça ne semble pas fonctionner !
 
Voici ce que j'ai écrit dans mon fichier html :
 
<html>
  <head>
    <script language="javascript">
      function total() {return document.InnerHTML}  
    </script>
  </head>
  <body onload="alert(total())">
  </body>
</html>
 
 
Le message indique juste comme contenu << undefined >> .
Ai-je mal utiliser le code ? Ou bien ne fonctionne-t-il simplement pas ? (ps: testé sous IE et FF)
 
Merci par avance.
 
@+
Celiphane

Reply

Marsh Posté le 16-01-2006 à 16:29:41    

il me semble que document n'a pas de propriété innerHTML et puis de toute façon c'est pas tout le document que tu veux mais juste le body non ( le head tu t'en moques non?) ?
Donc perso je ferais un truc dans le genre:

Code :
  1. function total() {
  2.   for(i=0; i<document.documentElement.childNodes.length; i++){
  3.     if ( document.documentElement.childNodes.item(i).tagName == 'BODY'){
  4.       return document.documentElement.childNodes.item(i).innerHTML;
  5.     }
  6.   }
  7. }


ça doit marcher sur IE & FF...

Reply

Marsh Posté le 16-01-2006 à 16:48:14    

Re !
 
Merci pour cette correction. Ca fonctionne en effet niquel pour lire par exemple le BODY.
 
C'est très correct, cela répond donc à ma question.
 
 
Maintenant, si possible, j'aimerai aller plus loin : en supposant que la page que je souhaite lire est mal formatée, par exemple, qu'elle soit exempte de balise BODY (supposons). Mon code devient donc inopérant.
Pour palier à ça, comment faire ? En gros 3 solutions me semblent envisageables :
 
1°) savoir lire hors balise, donc avec une autre technique.
2°) soit user d'un subterfuge consistant à utiliser la méthode write de javascript pour lui faire écrire les balises manquantes. Possible ça ?
3°) en se basant un tantinet sur la 2°, faire écrire à javascript une nouvelle page (je sais qu'on peut par exemple ouvrir un popup entièrement créé par la page appelante) en inscrivant la balise, puis en insérant la page à lire en l'appelant (iframe ou autre je ne sais pas je ne suis pas assez pointue) et enfin en inscrivant la balise de fin.
 
Qu'en pensez-vous ? En effet, souvent, mes scripts seraient amené à lire des pages pas nécessairement html, mais par exemple simplement des TXTs... et là, pas de balise BODY vous me comprenez ?
 
Merci pour votre aide !
 
@+
Celiphane

Reply

Sujets relatifs:

Leave a Replay

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