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

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    894
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 894
    Points : 266
    Points
    266

    Par défaut Afficher code source page HTML

    Bonjour,
    j'ai une page:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html>
    <html>
    <head>
    <title> partage avec hiérarchie imbriquée</title>
    </head>
    <frameset cols="20%,80%">
    <frame id="zone2" src="page1.html" name="zone2">
    <frameset rows="20%,80%">
    <frame name="zone1">
    </frameset>
    </frameset>
    </html>

    Lorsque j'ouvre cette page avec Internet explorer et que j'exécute le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
    Dim objApp, Window, monURL, count
     
    Set objApp = CreateObject("Shell.Application")
     
    count = -1
    For Each Window In objApp.Windows
      If Window = "Internet Explorer" Then
        count = count+1
        monURL = objApp.Windows(count).locationUrl  
     
        If monURL = "file:///C:/Users/username/Desktop/maPage.html" then	
     
    	   msgbox Window.Document.body.innerHTML
        End if
     
      End if   
     
    Next
    j'obtiens ceci :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <frame name="zone2" id="zone2" src="page1.html">
    <frameset rows="20%,80%">
    <frame name="zone1">
    </frameset>

    Je remarque au passage que le code source n'est pas entier. J'aimerais afficher le code source de la page page1.html qui se trouve dans la frame. Sauriez-vous ce que je dois mettre à la place de :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox Window.Document.body.innerHTML

    J'ai essayé :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox Window.Document.Frames(0).innerHTML

    ça marche pas.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 336
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 336
    Points : 2 357
    Points
    2 357

    Par défaut

    Mettez comme ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'msgbox Window.Document.body.innerHTML
        msgbox window.document.getElementById("zone2").contentWindow.document.body.innerHTML

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    894
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 894
    Points : 266
    Points
    266

    Par défaut

    Citation Envoyé par tsuji Voir le message
    Mettez comme ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'msgbox Window.Document.body.innerHTML
        msgbox window.document.getElementById("zone2").contentWindow.document.body.innerHTML
    Merci beaucoup. Je viens de me rendre compte que VBS est extrêmement sensible à la casse. Si l'on met un D majuscule à .document, ça génère des erreurs.
    La preuve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        msgbox Window.Document.body.innerHTML
        'msgbox window.document.getElementById("zone2").contentWindow.document.body.innerHTML
    ça marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        msgbox Window.Document.body.innerHTML
        msgbox window.document.getElementById("zone2").contentWindow.document.body.innerHTML
    Erreur : Cet objet ne gère pa cette méthode 'Document.getElementById'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        msgbox Window.document.body.innerHTML
        msgbox window.document.getElementById("zone2").contentWindow.document.body.innerHTML
    ça marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        msgbox Window.Document.body.innerHTML
        msgbox window.Document.getElementById("zone2").contentWindow.document.body.innerHTML
    Erreur : Cet objet ne gère pa cette méthode 'Document.getElementById'

    Grâce à votre aide, je vais peut-être enfin pouvoir arriver à faire un clic dans la frame secondaire.

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 336
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 336
    Points : 2 357
    Points
    2 357

    Par défaut

    Je viens de me rendre compte que VBS est extrêmement sensible à la casse.
    Erreur : Cet objet ne gère pa cette méthode 'Document.getElementById'
    Là, je n'en suis pas sûr. Je ne pense pas que ce soit vrai, non.

    Pour que l'erreur là-desus soit provoquée, l'écriture de l'id (ici, "zone2") devrait être fausse ou qu'elle ne devrait être pas là. Ce n'est pas à cause de document étant écrit comme Document.

    Il y a effectivement un tout petit nombre de cas où la casse est important; mais, ici, "document", ce n'en 'est certainement pas un.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    894
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 894
    Points : 266
    Points
    266

    Par défaut

    Citation Envoyé par tsuji Voir le message
    Là, je n'en suis pas sûr. Je ne pense pas que ce soit vrai, non.

    Pour que l'erreur là-desus soit provoquée, l'écriture de l'id (ici, "zone2") devrait être fausse ou qu'elle ne devrait être pas là. Ce n'est pas à cause de document étant écrit comme Document.

    Il y a effectivement un tout petit nombre de cas où la casse est important; mais, ici, "document", ce n'en 'est certainement pas un.

    J'ai revérifié et je maintiens mes précédente déclarations pour ce qui concerne .document et .Document

    Vous pouvez vérifier vous-même en mettant ces fichiers sur votre bureau :

    page1.html :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html>
    <html>
    <head>
    <title> partage avec hiérarchie imbriquée</title>
    </head>
    <frameset cols="20%,80%">
    <frame id="zone2" src="page1.html" name="zone2">
    <frameset rows="20%,80%">
    <frame name="zone1">
    </frameset>
    </frameset>
    </html>


    maPage.html :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!DOCTYPE html>
    <html>
    <head>
     
    <ul id="menu-vertical">
    	<li><a name="zone2" id="zone2" href="https://www.google.fr">GOOGLE</a>
        </li>
    </ul>
     
    </html>

    test.vbs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Option Explicit
    Dim objApp, Window, monURL, count
     
    Set objApp = CreateObject("Shell.Application")
     
    count = -1
    For Each Window In objApp.Windows
      If Window = "Internet Explorer" Then
        count = count+1
        monURL = objApp.Windows(count).locationUrl  
     
        If monURL = "file:///C:/Users/username/Desktop/maPage.html" then	
     
    	   msgbox Window.document.body.innerHTML
    	   msgbox Window.document.getElementById("zone2").contentWindow.document.body.innerHTML
    	   'msgbox Window.document.getElementById("zone2").contentWindow.document.getElementById("zone2").innerText	   
    	   'Window.document.getElementById("zone2").contentWindow.document.getElementById("menu-vertical").getElementsByTagName("a")(0).click
        End if
     
      End if   
     
    Next

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 336
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 336
    Points : 2 357
    Points
    2 357

    Par défaut

    D'abord, ce que vous postez comme maPage.html doit être au juste page1.html, et page1.html, maPage.html - si je ne me trompe !

    Voyons, la page page1.html (postée comme maPage.html) est tellement mal écrite qu'on s'en réjouit ou s'en larmente que combien un browseur soit généreux et tout soit pardonné. On devrait au moins la réécrire page1.html d'une façon un peu plus correcte (<head>...</head><body>...</body>) ?

    Et puis, je varie document en Document ou vice versa ... que se passe-t-il chez vous ? Chez moi, rien de changer.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    894
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 894
    Points : 266
    Points
    266

    Par défaut

    Citation Envoyé par tsuji Voir le message
    D'abord, ce que vous postez comme maPage.html doit être au juste page1.html, et page1.html, maPage.html - si je ne me trompe !
    Voyons, la page page1.html (postée comme maPage.html) est tellement mal écrite qu'on s'en réjouit ou s'en larmente que combien un browseur soit généreux et tout soit pardonné. On devrait au moins la réécrire page1.html d'une façon un peu plus correcte (<head>...</head><body>...</body>) ?

    Et puis, je varie document en Document ou vice versa ... que se passe-t-il chez vous ? Chez moi, rien de changer.

    Excusez-moi pour cette inversion de code page. Je sais pas pourquoi y'a ce bug chez moi. Il faudrait que je teste sur un autre pc. Quoi qu'il en soit, j'avais construit ce code html bancal pour pouvoir trouver la formule me permettant de récupérer le code source d'un(e) frame secondaire. J'ai réussi dans ce cas précis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Window.document.getElementById("zone2").contentWindow.document.body.innerHTML
    Pourriez-vous me dire si chez vous le code ci-dessous fonctionne (on remplace Id par Name) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox window.document.getElementByName("zone2").contentWindow.document.body.innerHTML
    Chez moi, ça donne "VBS ne gère pas cette propriété", même en faisant varier les D majuscules et d minuscules".

    En fait, j'ai un problème avec un frameset semblable sur une page html qui est elle bien construite et qui ne répond pas au code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Window.document.getElementById("zone2").contentWindow.document.body.innerHTML

  8. #8
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 336
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 336
    Points : 2 357
    Points
    2 357

    Par défaut

    Il ne faut sauter d'une chose à une autre sans rien établi une ou autre ... finalement on n'y comprend rien et en finit par dire n'importe quoi.

    Une methode qui s'appelle getElementsByName() (avec un s ) qui sorte une liste qui puisse être de rien si la fonction ne trouve rien. Ce n'est pas getElementByName().

    [0]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgbox "window.document.getElementById(""zone2"").contentWindow.document.body.innerHTML" & vbcrlf & _
        window.document.getElementById("zone2").contentWindow.document.body.innerHTML
    Nom : msgbox_1.png
Affichages : 24
Taille : 9,7 Ko

    [1]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgbox "window.Document.getElementById(""zone2"").contentWindow.Document.body.innerHTML" & vbcrlf & _
        window.Document.getElementById("zone2").contentWindow.Document.body.innerHTML
    Nom : msgbox_2.png
Affichages : 24
Taille : 9,9 Ko

    [2]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgbox "window.document.getElementsByName(""zone2"")(0).contentWindow.document.body.innerHTML" & vbcrlf & _
        window.document.getElementsByName("zone2")(0).contentWindow.document.body.innerHTML
    Nom : msgbox_3.png
Affichages : 24
Taille : 10,0 Ko

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    894
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 894
    Points : 266
    Points
    266

    Par défaut

    J'avais remarqué qu'un s se mettait parfois après getElement. Il faut pas oublier de rajouter le (0) contrairement à ById.
    Merci beaucoup pour cette aide qui m'a permis avancer.
    J'espère parvenir à résoudre le problème que je rencontre dans un frameset où la frame a un src de ce type : src="2-xxx.yy". Je n'arrive pas à y accéder.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sauvegarder code source page HTML dans var string
    Par Jordywolf dans le forum Swift
    Réponses: 0
    Dernier message: 13/05/2018, 08h44
  2. Code javascript qui s'affiche sur ma page html
    Par Thomas77380 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/04/2011, 13h13
  3. code source page html
    Par LoLoBix dans le forum Web
    Réponses: 1
    Dernier message: 09/03/2009, 10h51
  4. Afficher code source HTML
    Par ensi08 dans le forum Débuter
    Réponses: 6
    Dernier message: 07/09/2008, 01h35
  5. récupérer code source page HTML
    Par gianni17 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/07/2007, 15h47

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