|
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 'Erreur 80070005 : Accès refusé. ' En tentant de lire la propriété 'Erreur 80070005 : Accès refusé. ' En tentant d'invoquer la méthode '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
|
||
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.