Le forum (ô combien francophone) des utilisateurs de Powerbuilder.







Bonjour,
J'utilise l'OLE Microsoft Web Browser pour charger une page internet, jusque là tout va bien, mais ensuite sur la page chargée, il y a un bouton avec du code javascript dessus pour afficher des images (javascript:openImages('/agence/client/webservices/suivi/expeditionsSecurise.do?method=executePhotosVisioTracer&expeditionPK=xxxxx&accesimg=null');)
Mais lorsque je clique sur le bouton à travers PB, j'ai le message d'erreur "Votre Cession a expiré. Veuillez vous reconnecter", et l'image ne s'affiche pas.
Alors que si je fais la même manipulation à partir de ma connexion internet en dehors de PB, cela fonctionne correctement,
Savez vous d’où vient le problème et comment le résoudre ?
Merci d'avance,
Pb 10.5
Hors ligne
Bonjour,
Si tu prends ton URL dans un navigateur (fraîchement nettoyé: cache, sessions, histo, etc..) çà te ferais pas la même chose par hasard ?
Hors ligne







xlat a écrit:
Bonjour,
Si tu prends ton URL dans un navigateur (fraîchement nettoyé: cache, sessions, histo, etc..) çà te ferais pas la même chose par hasard ?
Non, aucun problème, même avec un navigateur tout beau tout neuf.
L'accès à la 1ère page se fait avec l'url "http://xxx.xxx.com/agence/client/webservices/suivi/expeditionsSecurise.do?userid=xxxxx&password=xxxxb&rca=&codesa=492092&compte=xxxx&date=&produit=&recepisse=&filiale=&prestation=&reference=xxxx&accessimg=&method=executeQuery"
Et le code qui figure sur le bouton est ""javascript:openImages('/agence/client/webservices/suivi/expeditionsSecurise.do?method=executePhotosVisioTracer&expeditionPK=xxxx&accesimg=null');
Par contre si j'essaye d'accéder directement à la page http://xxx.xxx.com/agence/client/webser … simg=null' c'est à dire avec le code figurant sur le bouton et en ajoutant, mais en ajoutant le début de l'url http://xxx.xxx.com et en enlevant la partie javascript:openImages, j'arrive bien à la bonne page.
Mais je ne comprend pas pourquoi pb n'arrive pas à enchainer le chargement de la première page et le code figurant sur le bouton ?
Si vous avez une idée ? Merci
Hors ligne
le javascript ne serait pas activé depuis l'ole ?
essai de charger la page "javascript:alert('si je suis activé');" sur l'ole pour vérifier
Hors ligne
j'ai fais un petit test est çà marche pas sauf si...
j'ai un ole_1 (ms web browser) pas initialisé, si je fait:
ole_1.object.Navigate2("javascript:alert('ca passe!');")
j'ai l'erreur:
--------------------------- Windows Internet Explorer --------------------------- Internet Explorer cannot download . Unspecified error --------------------------- OK ---------------------------
par contre si je fais :
ole_1.object.Navigate2("about:blank") ole_1.object.Navigate2("javascript:alert('ca passe!');")
je vois bien l'alerte, maintenant je ne crois pas que çà soit si c'est lié à ton problème...
Dernière modification par xlat (17-05-2011 17:39:07)
Hors ligne







Bonjour,
Le problème est que sur la 2ème page à laquelle j'essaye d'accéder, l'éditeur ne remets pas le login et le mot de passe, puisque lorsque l'on accède au site via un navigateur classique, le login et le mot de passe sont conservés en cache, alors que via PB, il ouvre une nouvelle fenêtre d'internet explorer et donc sans login et sans mot de passe.
Dans le haut de ma fenêtre contenant 'OLE', j'ai donc ajouté un bouton, en reconstruisant l'url avec le login et le mot de passe pour accéder aux images.
Par contre, j'aimerais modifier en dynamique la page à laquelle j'accède, afin de cacher à l'utilisateur les accès qui ne fonctionnent pas. Pour cela, grâce à la fonction GetUrl, je sais récupérer la page à laquelle j'accède, mais est-il possible de modifier une page html (en mettant le source de la page dans une datawindow par exemple) ? Et de renvoyer la page modifiée dans l'explorateur ?
Merci d'avance pour vos précieux conseils,
Hors ligne
Sur la page de Microsoft Web browser document property, tu y trouveras peut-être de quoi bricoler, je pense notement à getElementsByTagName pour chopper les balises <A>
et les supprimer.
Ca doit se faire avec un code comme :
long i oleobject lole_tags[] lole_tags[] = ole_web.object.document.getElementsByTagName("a") for i = 1 to upperbound( lole_tags[] ) if not match(lole_tags[i].object.href,"^javascript:") then continue //todo cacher l'element... un truc du genre lole_tags[i].object.style.visibility="hidden" next
Dernière modification par xlat (23-05-2011 11:21:10)
Hors ligne







xlat a écrit:
Sur la page de Microsoft Web browser document property, tu y trouveras peut-être de quoi bricoler, je pense notamment à getElementsByTagName pour chopper les balises <A>
et les supprimer.
Ca doit se faire avec un code comme :Code: pb
long i oleobject lole_tags[] lole_tags[] = ole_web.object.document.getElementsByTagName("a") for i = 1 to upperbound( lole_tags[] ) if not match(lole_tags[i].object.href,"^javascript:") then continue //todo cacher l'element... un truc du genre lole_tags[i].object.style.visibility="hidden" next
Bonjour,
J'obtiens toujours le message null object reference sur la syntaxe
lole_tags[] = ole_web.object.document.getElementsByTagName("a")
J'ai beau retourner le problème dans tous les sens, je suis coincée.............et l'aide de msdn ne me donne pas d'infos sur ce sujet.
Help me, please
Hors ligne
la version qui fonctionne :
long i oleobject lole_tags lole_tags = ole_web.object.document.getElementsByTagName("a") for i = 1 to lole_tags.length oleobject lole_item lole_item = lole_tags.item(i -1) if not match(lole_item.href,"^javascript:") then continue lole_item.style.visibility="hidden" next
Hors ligne







Merci beaucoup pour tous ces précieux conseils qui m'ont bien aidé à résoudre mon problème.
Une dernière question sur le sujet, par la même méthode, serait-il possible de modifier ce qui se trouve derrière la baliser href, afin d'ajouter le login et le mot de passe dans l'url (cela permettrait à l'utilisateur d'utiliser directement les images se trouvant sur la page d'origie, plutôt que les boutons que j'ai ajouté dans la fenêtre) ?
Merci d'avance,
Hors ligne
en modifiant lole_item.href ca marche pas ?
Hors ligne







xlat a écrit:
en modifiant lole_item.href ca marche pas ?
Tout simplement, encore merci merci merci
Hors ligne







Bonjour,
Toujours dans le même genre, lors de l'appel d'une fenêtre, il y a 2 boutons destinés à ouvrir des pièces jointes, le problème est que le fait de cliquer sur ces boutons entraine l'ouverture d'une 2ème fenêtre de navigateur qui ne se fait pas dans PB mais via Internet Explorer, ce qui n'est pas très esthétique.
<FORM name="Image02" method=post action="http:/i" target="_fenetre"> <TD align=center><font size=-1><input type="button" value="Page 02" onclick="fnLanceImage(document.Image02);"> <INPUT TYPE="HIDDEN" NAME="UTILISATEUR" VALUE="" > <INPUT TYPE="HIDDEN" NAME="TICKET" VALUE="" > <INPUT TYPE="HIDDEN" NAME="NUMCD" VALUE="" > <INPUT TYPE="HIDDEN" NAME="DEBIMG" VALUE="" > <INPUT TYPE="HIDDEN" NAME="HAUTIMG" VALUE=""> <INPUT TYPE="HIDDEN" NAME="NUMIMG" VALUE="" > <INPUT TYPE="HIDDEN" NAME="CLEUNIQUE" VALUE="" > <INPUT TYPE="HIDDEN" NAME="DEJAVISUIMAGE" VALUE="NON" > <INPUT TYPE="HIDDEN" NAME="TYPE" VALUE="" > <INPUT TYPE="HIDDEN" NAME="LOGO" VALUE="" > <INPUT TYPE="HIDDEN" NAME="LANG" VALUE="" > <INPUT TYPE="HIDDEN" NAME="SVCTRC" VALUE="35" > </font></TD></FORM>
Et l'appel de cet fenêtre est faites par la fenêtre précédente via une url http://
J'ai essayé plusieurs solutions, la 1ere étant de modifier cette partie, afin d'obtenir :
<FORM name="Image01" method=post action="http:// <TD align=center><font size=-1><input type="submit" value="Page 01" />,
mais après je ne sais pas comment remplacer tout le contenu de la fenêtre.
L'autre solution étant d'essayer d'accéder aux propriétés via la commande getElementsByTagName("form"), mais là encore je n'arrive pas à accéder aux propriétés.
Je tourne en rond, et ne trouve pas la bonne solution,
Merci d'avance si vous avez une petite idée,
Hors ligne
wazou1812 a écrit:
mais après je ne sais pas comment remplacer tout le contenu de la fenêtre.
si tu possèdes déjà une référence sur cette fenêtre disons, ole_web peut-être qq chose comme :
ole_web.object.document.getElementsByTagName("body").innerHTML= ls_form_html
Hors ligne







xlat a écrit:
wazou1812 a écrit:
mais après je ne sais pas comment remplacer tout le contenu de la fenêtre.
si tu possèdes déjà une référence sur cette fenêtre disons,
ole_webpeut-être qq chose comme :Code: pb
ole_web.object.document.getElementsByTagName("body").innerHTML= ls_form_html
Bonjour,
Efectivement, j'avais oublié de faire getElementsByTagName avant d'affecter le innerhtml , merci pour le renseignement
ole_Browser_new.object.document.getElementsByTagName("body")
ole_Browser_new.Object.Document.Body.InnerHTML = is_url_multi
Et est-il possible d'ouvrir une autre instance de la fenêtre contenant l'ole, pour utiliser dans le cas de l'ouverture des pièce jointes par exemple ?
Merci d'avance,
Hors ligne
wazou1812 a écrit:
Et est-il possible d'ouvrir une autre instance de la fenêtre contenant l'ole, pour utiliser dans le cas de l'ouverture des pièce jointes par exemple ?
Si ce que tu cherches à faire c'est d'utiliser ce contrôle OLE pour créer de toute pièce une page html, et bien oui, c'est faisable:
ole_web.object.Navigate2( "about:blank" ) do ; yield() ; loop while not ib_canwritehtml ole_web.object.Document.Open() ole_web.object.Document.Write(ls_html) ole_web.object.Document.Close()
avec ce code sur ole_web.event beforenavigate2:
ib_canwritehtml=false
et celui là sur ole_web.event documentcomplete:
ib_canwritehtml=true
Hors ligne







Trop fort....j'essaye tout de suite
Et encore une question sur cette balise
<TD bgColor=#376193 align=middle><A onmouseover="MM_swapImage('Image12','','/fr/img/fr-Boutonretour1on.gif',1)" onmouseout=MM_swapImgRestore()
J'essaye de désactiver les propriétés onmouseover et onmouseout en mettant et enétant positionné sur l'élément getElementsByTagName("a") ou getElementsByTagName("A")
lole_item.onmouseover =""
lole_item.onmouseover =ls_null
Mais rien ne fonctionne, les propriétés ne sont pas désactivées.
Une idée ? Merci d'avance...
Hors ligne














S'il y a plusieurs balises <A> (ce qui est fort probable), en faisant ton getElementsByTagName("a"), tu récupères un tableau de ces balises.
Il faudrait peut-être ajouter un ID unique et utiliser un getElementById().
Hors ligne







erasorz a écrit:
S'il y a plusieurs balises <A> (ce qui est fort probable), en faisant ton getElementsByTagName("a"), tu récupères un tableau de ces balises.
Il faudrait peut-être ajouter un ID unique et utiliser un getElementById().
Malheureusement ma page ne contient qu'une seule balise a, et pas d'id
Hors ligne














Euh, enlève les liens réels dans le code, j'ai réussi à visualiser 2 récépissés
Hors ligne
Et avec çà pour shooter l'event ?
lole_item.setAttribute("onmouseover","")
Dernière modification par xlat (08-06-2011 17:18:06)
Hors ligne







xlat a écrit:
Et avec çà pour shooter l'event ?
Code: pb
lole_item.setAttribute("onmouseover","")
Cela ne fonctionne pas, j'ai mis un messagebox, le code passe bien dessus, mais les attributs n'ont pas été supprimé, au pire, je peux aussi supprimer complétement cette balise A que je ne désire pas utiliser, mais deleteelement ne fonctionne pas (lole_item.delete non plus d'ailleurs)
Une idée ?
Merci
Hors ligne
si il veut pas mourrir alors cache le
lole_item.style.visibility="hidden"
Hors ligne







xlat a écrit:
si il veut pas mourrir alors cache le
Code: pb
lole_item.style.visibility="hidden"
Bonjour,
J'avais simplement oublié de récupérer l'item avant de vouloir modifier les propriétés
For i = 1 to lole_tags.length lole_item = lole_tags.item(i - 1) Next
En ajoutant lole_item = lole_tags.item(i - 1) dans la boucle, cela fonctionne beaucoup mieux
Et là pas de problème, les propriétés sont bien modifiées, désolée pour le dérangement,
Encore merci
Hors ligne