Comment adapter ce code pour ne plus planter
Bonjour,

J'utilise sans problème le code joint qui marchait 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 comme par exemple avec ce site qui contient 2 frames : pas de plantage:
http://admi.net/jo/textes/ld.html
( rechercher le mot texte par exemple )

Par contre il y a plantage avec 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 ou de lire la propriété , l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80070005 : Accès refusé.
'
En tentant de lire la propriété , l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80070005 : Accès refusé.
'
En tentant d'invoquer la méthode , 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



Contribution le : 31/05/2005 19:24
Créer un fichier PDF de la contribution Imprimer


Re: Comment adapter ce code pour ne plus planter
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Une idée :

Réaliser un traitement d'exception afin de passer la frame qui cause problème. (Voir aide : QUAND EXCEPTION )

A bientôt,

totof

Contribution le : 01/06/2005 09:20
Créer un fichier PDF de la contribution Imprimer


Re: Comment adapter ce code pour ne plus planter
Bonjour,

J'ai continué mes recherches sur la cause de ce plantage et en réalité ce n'est pas une anomalie de frame mais le fait que c'est une balise IFRAME et non FRAME

De ce fait empêcher le plantage n'est pas la solution : en définitive il faut que ce code puisse prendre en compte des IFRAMES et cà je ne sais pas faire.

Empêcher le plantage me permet de faire la recherche dans la page principale mais ce que je voudrais c'est aussi que la recherche puisse se dérouler à l'interieur de la page IFRAME

Cordialement

Contribution le : 01/06/2005 10:01
Créer un fichier PDF de la contribution Imprimer


Re: Comment adapter ce code pour ne plus planter
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Pourquoi ne pas essayer :

POUR i=1 A nbcadre

QUAND EXCEPTION DANS
docf est un objet Automation dynamique = doc>>frames(i-1)>>document
FAIRE
//*** Code de récupération des iframes ***//
//*** EXEMPLE : JE NE CONNAIS PAS LA SYNTAXE ***//
docf est un objet Automation dynamique = doc>>iframes(j)>>document
FIN

//...
FIN


Contribution le : 01/06/2005 11:52
Créer un fichier PDF de la contribution Imprimer


Re: Comment adapter ce code pour ne plus planter
Anonyme
Merci pour ton aide

Malheureusement çà parait ne pas être aussi simple
Cette forme d'écriture n'existe pas avec IFRAME
Je ne trouve aucun exemple qui traite de ce sujet

Maintenant comme je ne suis pas attaché à cette façon de faire, peut-être aurais-tu une solution pour utiliser la fenêtre de recherche d'un mot comme dans IE et qui marcherait dans les frames ou les iframes

Contribution le : 01/06/2005 14:23
Créer un fichier PDF de la contribution Imprimer


Re: Comment adapter ce code pour ne plus planter
Anonyme
Bonjour,

Le quand exception est trés joli mais :

1-Ca ne corrige pas le probléme ca permet de le logger pour correction ou d'adapter son code face au probléme.
2-Il faut faire un traitement dans le quand exception pour resoudre le probléme ; le simple fait d'afficher l'erreur n'avance pas l'utilisateur.


Mais un simple quand exception ne sert strictement a rien.


Contribution le : 06/06/2005 15:15
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2