Fonction qui ne marche pas sous FireFox

Ish
Eléphant du PHP | 200 Messages

16 nov. 2006, 12:08

Bonjour à tous,

j'ai un petit probleme dans mon code. J'ai une application web que je dois débugger pour l'adapter à FireFox.
Elle marche nickel-chrome sur IE mais une fois passée sous FireFox il ya un bug que je n'arrive à résoudre !!

Code : Tout sélectionner

// SI UN SITE ET UNE USINE sont sélectionnés if ((Trim(window.frames['Menu'].FMenu2.saisieSite.value)!="")&&(Trim(window.frames['Menu'].FMenu2.saisieUsine.value)!="")) { ....
En fait cela me met un message d'erreur
" Message d'erreur :
window.frames.Menu.FMenu2 has no propreties
"

Pourquoi est-ce que cela fonctionne parfaitement sous IE et pas sous FireFox .. c'est ce que j'arrive pas à comprendre mais si je sai que sous FireFox les régles de codage doit bien être respecté, mais j'ai pas l'impression de mal faire, vu que cela marche sous IE !!

Si qqun avait la solution, je l'en remercie d'avance !! :wink:
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Ish
Eléphant du PHP | 200 Messages

16 nov. 2006, 12:25

je me suis rendu compte que je ne vous avez pas assez mis de code pour comprendre le truc alors voici

Code : Tout sélectionner

function generer() { wEcwUI.clearMessage(); var req; req = "false"; // SI UN SITE ET UNE USINE sont sélectionnés if ((Trim(window.frames['Menu'].FMenu2.saisieSite.value)!="")&&(Trim(window.frames['Menu'].FMenu2.saisieUsine.value)!="")) { req="select * from("; // SI UN PI - S/P est renseigné if ((Trim(window.frames['Menu'].FMenu2.saisiePI.value)!="")||(Trim(window.frames['Menu'].FMenu2.saisieSP.value)!="")) { if ((Trim(window.frames['Menu'].FMenu2.saisiePI.value)!="")&&(Trim(window.frames['Menu'].FMenu2.saisieSP.value)!="")) req += "Select A.PINCOD as PINCOD,A.PINPI1 as PINPI1,A.INSCOD as INSCOD, A.PINPI2 as PINPI2, A.PINNOM as PINNOM, A.PINDSL as PINDSL, A.FPICOD as FPICOD, A.PINNGE as PINNGE, A.PINDMJ as PINDMJ, A.LGECOD as LGECOD , A.HGECOD as HGECOD , C.CGECOD as CGECOD froM SDWI.SDNQTOPI A, SDWI.SDNQTOHC C where A.PINDFV is null and C.HCEDTF is null and C.PINCOD=A.PINCOD and C.INSCOD=A.INSCOD and A.INSCOD='"+window.frames['Menu'].frm.elements['SiteHI2'].value+"' and A.PINPI1='"+Trim(window.frames['Menu'].FMenu2.saisiePI.value.toUpperCase())+"' and A.PINPI2='"+window.frames['Menu'].FMenu2.saisieSP.value.toUpperCase()+"' "; else if ((Trim(window.frames['Menu'].FMenu2.saisiePI.value)=="") && (Trim(window.frames['Menu'].FMenu2.saisieSP.value)!="")) req += "Select A.PINCOD as PINCOD,A.PINPI1 as PINPI1,A.INSCOD as INSCOD, A.PINPI2 as PINPI2, A.PINNOM as PINNOM, A.PINDSL as PINDSL, A.FPICOD as FPICOD, A.PINNGE as PINNGE, A.PINDMJ as PINDMJ, A.LGECOD as LGECOD , A.HGECOD as HGECOD , C.CGECOD as CGECOD froM SDWI.SDNQTOPI A, SDWI.SDNQTOHC C where A.PINDFV is null and C.HCEDTF is null and C.PINCOD=A.PINCOD and C.INSCOD=A.INSCOD and A.INSCOD='"+window.frames['Menu'].frm.elements['SiteHI2'].value+"' and A.PINPI2='"+window.frames['Menu'].FMenu2.saisieSP.value.toUpperCase()+"'"; else if ((Trim(window.frames['Menu'].FMenu2.saisiePI.value)!="") && (Trim(window.frames['Menu'].FMenu2.saisieSP.value)=="")) req += "Select A.PINCOD as PINCOD,A.PINPI1 as PINPI1,A.INSCOD as INSCOD, A.PINPI2 as PINPI2, A.PINNOM as PINNOM, A.PINDSL as PINDSL, A.FPICOD as FPICOD, A.PINNGE as PINNGE, A.PINDMJ as PINDMJ , A.LGECOD as LGECOD , A.HGECOD as HGECOD , C.CGECOD as CGECOD froM SDWI.SDNQTOPI A, SDWI.SDNQTOHC C where A.PINDFV is null and C.HCEDTF is null and C.PINCOD=A.PINCOD and C.INSCOD=A.INSCOD and A.INSCOD='"+window.frames['Menu'].frm.elements['SiteHI2'].value+"' and A.PINPI1='"+Trim(window.frames['Menu'].FMenu2.saisiePI.value.toUpperCase())+"'"; window.frames['Menu'].FMenu2.saisieNom.value=""; } ....
voila ... donc cela vient surement window.frames['Menu'].FMenu2 mais je ne vois pas bien en quoi il y a une probleme vu que cela fonctionne sous Internet Explorer !!
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 nov. 2006, 12:55

Ne faudrait-il par remonter d'un niveau pour disposer de l'objet frames[] ? celui ci doit être défini pour la fenêtre qui défini les cadres et non pas depuis l'un cadre qui n'a, à priori aucune visibilité dessus...

j'essayerais comme ceci :

Code : Tout sélectionner

window.parent.frames[]
Sinon faudrait aussi que tu nous donnes la structure de tes frames..

A noter que les soucis entre IE/FF ont plus leur place dans les forum HTML ou JS, que dans celui de PHP qui vit une vie paisible sur son serveur, loin des tracas des navigateurs du client ;) (Si jamais notre zélé modérateur aux chevilles enflées, ou même un autre, passe dans le coin... :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Ish
Eléphant du PHP | 200 Messages

16 nov. 2006, 13:17

Ne faudrait-il par remonter d'un niveau pour disposer de l'objet frames[] ? celui ci doit être défini pour la fenêtre qui défini les cadres et non pas depuis l'un cadre qui n'a, à priori aucune visibilité dessus...

j'essayerais comme ceci :

Code : Tout sélectionner

window.parent.frames[]
Sinon faudrait aussi que tu nous donnes la structure de tes frames..

A noter que les soucis entre IE/FF ont plus leur place dans les forum HTML ou JS, que dans celui de PHP qui vit une vie paisible sur son serveur, loin des tracas des navigateurs du client ;) (Si jamais notre zélé modérateur aux chevilles enflées, ou même un autre, passe dans le coin... :))
Ok ok ... je tacherais de faire attention !!! Ou est-ce que tu pourrais déplacer mon sujet sur le topic de Javascript
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 nov. 2006, 13:21

Oulah non... je laisse ça aux modérateur, je risquerais de me faire mal à mon p'tit dos :)

Mais à la limite, ce qui m'interesse plus c'est de savoir si tu as essayé, et si ça fonctionne ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 19672 Messages

16 nov. 2006, 13:30

...est-ce que tu pourrais déplacer mon sujet sur le topic de Javascript
C'est fait.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Ish
Eléphant du PHP | 200 Messages

16 nov. 2006, 14:36

En fait je ne vois pas bien ce que tu veux dire par :
remonter d'un niveau pour disposer de l'objet frames[]

Le truc c'est que sous-firefox, il ne veut pas rentrer dans la boucle !!!

Code : Tout sélectionner

if ((Trim(window.parent.frames['Menu'].FMenu2.saisieSite.value)!="")&&(Trim(window.prent.frames['Menu'].FMenu2.saisieUsine.value)!="")) { ..... ..... ..... else {wEcwUI.setMessage("W","Sélectionnez un site et une usine.");}
En fait j'ai une page qui est un tableau (normale) ou j'ai deux frames une avec mes 4 listes déroulantes liés (qui marche impécable) et l'autre ou s'affiche le résultat (en plein millieu de la page) !!
En bas de ma page, j'ai réalisé une petite fonction javascript qui regarde si les listes on été remplie ou pas. Si les deux premiers champs n'ont pas été remplie et que l'on valide le tout cela doit afficher (en bas de page) "Selectionnez un site et une usine"
Mais quand je sélectionne les 4 champs, cela me met toujours qu'il faut que je choisisse " un site et une usine " ...
Cela veut dire que elle ne passe pas dans la fonction !!
j'ai regardé sur les propriété de la page et les argument du site et de l'usine sont bien là !!
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Ish
Eléphant du PHP | 200 Messages

16 nov. 2006, 16:24

Je relance ... au cas où quelqu'un aurait une idée !! ... :wink:

Je me suis renseigné un peu partout sur le net et j'ai eu vent que les frames ne marchait pas sous FireFox ... est-ce vrai ??
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 nov. 2006, 12:59

En fait je ne vois pas bien ce que tu veux dire par :
remonter d'un niveau pour disposer de l'objet frames[]
En fait, le DOM (Document Object Model) en javascript, fonctionne un peu comme du xml voire un systeme de fichier : tu pars de ta fenêtre, tu descend dans un formulaire, puis dans un champ pour en lire la valeur. Tu peux aussi partir d'un champ et remonter vers son formulaire pour en connaître le nom par exemple.

Je ne sais pas si ton problème vient de là, mais ce que je me disais, c'est que la page où est ton script ne connait en théorie pas les frames, puisque celles-ci sont définies dans une autre page qui a ouvert celle-ci. Je suggerais donc de "remonter" au niveau de la page parente avec l'élément "parent" pour être sur de trouver le tableau frames[]. Tu devrais alors pouvoir faire appel à la frame nomée Menu, puis à son formulaire, etc.

A noter une petite erreur de syntaxe dans ton test :

Code : Tout sélectionner

if ((Trim(window.parent.frames['Menu'].FMenu2.saisieSite.value)!="")&&(Trim(window.prent.frames['Menu'].FMenu2.saisieUsine.value)!=""))
Il manque le A dans le deuxième window.pArent :)

essaye également de placer des alert pour tester tes éléments un par un :
alert(window.parent.frames['Menu']); // s'il retourne "undefined" c'est que la frame n'est pas trouvée
alert(window.parent.frames['Menu'].FMenu2); // s'il retourne "undefined" c'est que c'est le formulaire qu'il ne voit pas
alert(window.parent.frames['Menu'].FMenu2.saisieSite); // ici le champ, 
...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Ish
Eléphant du PHP | 200 Messages

17 nov. 2006, 14:49

Merci Ryle !!

J'avais vu l'erreur de syntaxe avec "pArent" !! :wink:

En effet, c'est très bête, l'utilisation des alert() permet de voir d'ou vient l'erreur !
Donc il reconnait bien la Frame, par contre le probeme se situe au niveau du formulaire (qu'il ne voit donc pas !)

Encore une fois, je perd un peu les pédales car le codes marches nickel-chrome sous Internet Explorer. Est-ce que le problème viendrait de la non fermeture d'un balise ou d'un bout de code pas bien écrit !!!

Bizarre bizarre ... mais je ne desespère pas ! 8)
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Ish
Eléphant du PHP | 200 Messages

17 nov. 2006, 15:37

JE viens de touver l'erreur pour la compatibilité FireFox !!

il faut remplacer :

Code : Tout sélectionner

window.frames['Menu'].FMenu2
par

Code : Tout sélectionner

window.parent.frame['Menu'].document.forms['FMenu2
Voila donc c'est mon formulaire que je devais renseigner !!!
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!