OVH Cloud OVH Cloud

[WDx] Besoin d'aide SVP pour l'utilisation de Webbrowser

1 réponse
Avatar
Georges Peyre
Bonjour,

J'utilise sans problème ce code et qui marche sans problème jusqu'à ce
jour : il permet de mettre en surbrillance un mot recherché chaque fois
qu'il est trouvé dans la page en cours d'affichage.
Il marche correctement dans les pages multi-frames à l'exception de
certaines pages du site de PCSOFT comme par exemple celle_ci qui
affiche la liste des sujets des LST
http://www.pcsoft.fr/st/nouveautes-st.html

Le plantage est le suivant :
Erreur à la ligne 10 du traitement Procédure globale RechercheDoc.
Vous accédez au membre Automation document.
En tentant d'invoquer la méthode <document> ou de lire la propriété
<document>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80070005 : Accès refusé.
'
En tentant de lire la propriété <document>, l'objet Automation/ActiveX
a renvoyé l'erreur suivante :
'Erreur 80070005 : Accès refusé.
'
En tentant d'invoquer la méthode <document>, l'objet Automation/ActiveX
a renvoyé l'erreur suivante :
'Erreur 80004001'


Mes questions sont les suivantes :
-1- Quelle est la particularité de cette page sur le plan des frames ?
-2- Que dois-je corriger pour que cette particularité soit prise en
compte dans le code suivant

Merci d'avance
Cordialement




------------- CODE A TESTER ------------------

Code à placer dans la fenêtre contenant l'activex navigate ( nommé
HTML_EXPLORER )

// ces 2 variables sont déclarées en global dans la fenêtre
copie est un tableau de 2000 chaînes
nbcopie est un entier


// Code du bouton de lancement de la recherche dans la page affichée
// MonTxt est le champ contenant le mot cherché
SI MonTxt = "" ALORS RETOUR

RazCopie // remet le tableau à blanc

letxt est une chaîne = MonTxt // zone de saisie contenant le texte à
rechercher
NbCopie=0 // entier déclaré en global

docframe est un objet Automation dynamique = HTML_EXPLORER>>document
RechercheDoc(docframe,letxt)
libérer docframe


// --------------------- Procédures
------------------------------------

PROCEDURE RechercheDoc(doc,LeTxt)
// Recherche d'un mot dans le document affiché : pages avec ou sans
frames
NbCopie++
nbcadre est un entier = doc>>frames>>length
SI nbcadre > 0 ALORS
i est un entier
POUR i=1 A nbcadre
( LE PLANTAGE SE PRODUIT SUR LA LIGNE QUI SUIT )
docf est un objet Automation dynamique = doc>>frames(i-1)>>document
RechercheDoc(docf,LeTxt)
libérer docf
FIN
SINON
SI Copie[NbCopie]<>"" ALORS
doc>>body>>innerHTML(Copie[NbCopie])
FIN
Copie[NbCopie]=doc>>body>>innerHTML
txtr est un objet Automation dynamique = doc>>body>>createTextRange()
SI txtr>>findText(LeTxt)=1 ALORS
txtr>>scrollIntoView()
FIN
TANTQUE txtr>>findText(LeTxt)=1
txtr>>execCommand("Bold")
txtr>>execCommand("Backcolor",False,"blue")
txtr>>execCommand("ForeColor",False,"white")
txtr>>execCommand("BackGroundColor",True,"white")
txtr>>collapse(False)
FIN
libérer txtr
FIN


PROCEDURE RazCopie()
z est un entier
POUR z = 1 A 2000
Copie[z] = ""
FIN

--
Elle est pas belle la vie ?

1 réponse

Avatar
Georges Peyre
Bonjour,

En continuant mes recherches pour trouver une solution à mon problème
j'ai trouvé que mon problème est lié à la prise en compte des IFRAMES
alors que ce code traite les FRAMES

Ma question est donc la suivante : comment modifier ce code pour lire
les documents IFRAMES

Merci d'avance

Cordialement






------------- CODE A TESTER ------------------

Code à placer dans la fenêtre contenant l'activex navigate ( nommé
HTML_EXPLORER )

// ces 2 variables sont déclarées en global dans la fenêtre
copie est un tableau de 2000 chaînes
nbcopie est un entier


// Code du bouton de lancement de la recherche dans la page affichée
// MonTxt est le champ contenant le mot cherché
SI MonTxt = "" ALORS RETOUR

RazCopie // remet le tableau à blanc

letxt est une chaîne = MonTxt // zone de saisie contenant le texte à
rechercher
NbCopie=0 // entier déclaré en global

docframe est un objet Automation dynamique = HTML_EXPLORER>>document
RechercheDoc(docframe,letxt)
libérer docframe


// --------------------- Procédures ------------------------------------

PROCEDURE RechercheDoc(doc,LeTxt)
// Recherche d'un mot dans le document affiché : pages avec ou sans frames
NbCopie++
nbcadre est un entier = doc>>frames>>length
SI nbcadre > 0 ALORS
i est un entier
POUR i=1 A nbcadre
( LE PLANTAGE SE PRODUIT SUR LA LIGNE QUI SUIT )
docf est un objet Automation dynamique = doc>>frames(i-1)>>document
RechercheDoc(docf,LeTxt)
libérer docf
FIN
SINON
SI Copie[NbCopie]<>"" ALORS
doc>>body>>innerHTML(Copie[NbCopie])
FIN
Copie[NbCopie]=doc>>body>>innerHTML
txtr est un objet Automation dynamique = doc>>body>>createTextRange()
SI txtr>>findText(LeTxt)=1 ALORS
txtr>>scrollIntoView()
FIN
TANTQUE txtr>>findText(LeTxt)=1
txtr>>execCommand("Bold")
txtr>>execCommand("Backcolor",False,"blue")
txtr>>execCommand("ForeColor",False,"white")
txtr>>execCommand("BackGroundColor",True,"white")
txtr>>collapse(False)
FIN
libérer txtr
FIN


PROCEDURE RazCopie()
z est un entier
POUR z = 1 A 2000
Copie[z] = ""
FIN



--
Elle est pas belle la vie ?