Je pense que oui car dès que j'enlève setTimeout de la ligne de commande, ca ne couine plus !
J'ai essayé un peu tout, avec les " et ' mais il doit ya voir une subtilité de plus qui m'échappe.
Je continue !
Version imprimable
Je pense que oui car dès que j'enlève setTimeout de la ligne de commande, ca ne couine plus !
J'ai essayé un peu tout, avec les " et ' mais il doit ya voir une subtilité de plus qui m'échappe.
Je continue !
Bon, je dois vraiment être un boulet :calim2:
J'ai clairement l'impression que le settimeout imbriqué avec la multiplication des " etc ne lui plait pas.
ensuite, j'ai essayé de sortir la fonction pour passer les paramètres avec un variable globale
Quand je laisse return false; j'ai un message d'erreur avec Fin dinstruction attentue a l'affichage de la page.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 var NomMachine = ""; ... function MenuMachine () { // parent.frames['paneaudroite'].location.replace ("MenuMachine.htas?PC=" + Machine); // top.document.getElementById('if_action').src = "MenuMachine.htas?PC=" + Machine; // parent.JeMeRemplace (Machine); var url = "MenuMachine.htas?PC=" + NomMachine; setTimeout ("top.Charge_Iframe (url)", 1000); } ... NomMachine = rs.fields(0).Value; <a href=\"#\" onclick=\"MenuMachine(); return false;\">" + rs.fields(0).Value + "</a>
Avec ce code, je remonte jusqu'à ma function, avec toujours cet objet blablaCode:
1
2 <a href=\"#\" onclick=\"MenuMachine()\">" + rs.fields(0).Value + "</a>
Heu ... oui effectivement, il semble y avoir une confusion làTu définis une variable serveur (c'est de l'ASP ?) que tu essayes d'utiliser directement en JS (comme si c'était une variable JS) :?Code:NomMachine = rs.fields(0).Value;
De plus je pensais que ton <a href> était généré en dynamique (dans un document.write() ou équivalent) mais ce n'est visiblement pas le cas : tu sembles mélanger ici aussi langage serveur et client ...Code:var url = "MenuMachine.htas?PC=" + NomMachine;
A+
A priori, je ne pense pas qu'il y ait de confusion.
Tout est fait en javascript.
Ma ligne d'appel <href> est bien dynamique, générée à travers un document.write.
Les objets pour accéder à ma base Access etc et mes variables sont déclarées dans des balises <script language="JavaScript"> </script>
Tout est en Javascript + du html principalement dynamique sauf les quelques déclaration des iframe et listes de menu.
Alors voici un peu plus :
NomMachine est une variable globale de ma partie Javascript afin que je puisse l'utiliser partout et en particulier dans la fonction pour la création de l'url, au cas ou la fonction passée dans le setTimeout poserait des problèmes avec les " en plus de l'encadrement de la fonction elle même
As tu besoin de plus d'infirmations ?Code:
1
2 contenu += "<td style=\"width: 70%;\" text-align: left;><a href=\"#\" onclick=\"MenuMachine()\">" + rs.fields(0).Value + "</a></td>"
Pour l'instant non : ça confirme juste la confusion supposée ;)
Pour que ta variable soit alimentée correctement côté Javascript, tu devrais plutôt avoirAinsi il s'agit bien d'une variable JS, dont la valeur est déterminée lors de la génération de la page.Code:NomMachine = "<%= rs.fields(0).Value %>";
Comme tu l'as écrit toi, ça supposerait que rs.fields(0).Value soit une instruction Javascript, ce qui n'est pas le cas ...
A+
Je n'ai le niveau voulu pour argumenter mais je penserai que non.
Voici la procédure complète dans laquelle est inscrite l'appel qui me pose un soucis.
C'est bien du javascript non ? :(
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 function AfficheProprio (UserID) { sqlString = "SELECT Machines.Machine, Machines.Actif FROM Machines WHERE (((Machines.IdUtilisateur)=" + UserID + ")) ORDER BY Machines.Machine;"; contenu = "<br><table><tr><td border=\"1\"></td><td style=\"width: 50%;\" text-align: left; border=\"1\"></td><td border=\"1\" ></tr>"; document.write (contenu); var rs=new ActiveXObject("ADODB.Recordset"); try { rs.Open (sqlString , conn, adOpenUnspecified, adLockUnspecified); } catch(e) { alert (sqlString); alert (e.description); rs = null; return; } while (!rs.eof) { contenu = "<tr><td><img style=\"width: 20px; height: 20px;\" "; if (rs.fields(1).Value) { contenu += "alt=\"Active\" src=\"../images/set.png\""; } else { contenu += "alt=\"Désactivé\" src=\"../images/unset.png\""; } // contenu += "></td></td><td style=\"width: 70%;\" text-align: left;><a href=\"#\" onclick=\"parent.JeMeRemplace ('" + rs.fields(0).Value + "'); return false;\">" + rs.fields(0).Value + "</a></td><td>"; NomMachine = rs.fields(0).Value; contenu += "></td></td><td style=\"width: 70%;\" text-align: left;><a href=\"#\" onclick=\"MenuMachine()\">" + rs.fields(0).Value + "</a></td><td>"; if (rs.fields(1).Value) { contenu += "<img style=\"width: 20px; height: 20px;\" alt=\"Détacher\" src=\"../images/fin.gif\" onclick=\"DetacheMachine('" + rs.fields(0).value +"')\">"; } document.write (contenu + "</td></tr>"); rs.movenext; } document.write ("</table>"); rs.close; rs = null; }
Heuuu .... oui :calim2:
Mais ce n'est pas une utilisation ni standard, ni préconisée (ce n'est pas une critique, mais un constat).
L'utilisation du document.write() est généralement déconseillée.
L'ActiveX que tu utilises (IE only, donc) est également à risque, car ouvre la porte de la BDD au poste client.
Bref, effectivement, il n'y avait pas de mélange de langage client/serveur (puisque tout est client), mais par contre, je ne pourrai pas t'aider plus pour les erreurs que tu obtiens :(
(personnellement, je réécrirais la partie ActiveX côté serveur)
Par contre, une fois ce problème réglé, les syntaxes concernant les mises à jour de frames restent valables ;)
A+
OK,
Merci beaucoup néanmoins pour le temps passé :ccool:
Une dernière question alors.
Comment depuis mon iframe +2, je peux ré ouvrir ma fenêtre principale ?
Je vais essayer de me débrouiller comme ça en passant des paramètres pour le faire tomber au bon endroit ?
Merci
ET LA LUMIERE FUT !!!!!!!!!!!!! ..........
Voici comment ej m'en suis sorti
il n'aime définitivement pas quand j'ajoute leCode:
1
2 <a href=\"#\" onclick=\"MenuMachine()\">" + rs.fields(0).Value + "</a>
mais franchement je vais le laisser comme ça pour le moment ;)Code:; return false;
avec
et je fais tout simplementCode:
1
2
3
4 function MenuMachine () { parent.JeMeRemplace (NomMachine); }
Un GROS GROS merci à toi E.Bzz pour ton temps et tes compétences.Code:
1
2
3
4 function JeMeRemplace (Machine) { window.location.replace ("MenuMachine.htas?PC=" + Machine); }
Honnêtement, je ne sais pas si c'est très joli ou non, mais ça va suffire à mon bonheur pour aujourd'hui :mouarf:
Encore merci
Tout à fait correct :ccool:
Le seul truc c'est que je ne comprends pas ce qui empêche d'intégrer le return false;
Mais tu es sauvé par la chronologie : le changement de page entraîné par le onclick intervient avant le rechargement via le href (qui, en l'état actuel est bien appelé, ce que devait empêcher le return, mais n'a pas le temps de s'exécuter).
A+
le false est interprété par le serveur ?
sinon faut inverser les quotesCode:<a href=\"#\" onclick=\"MenuMachine();return fa"+"lse;\">" + rs.fields(0).value + "</a>
c'est quand même plus lisible...Code:
1
2 document.write('<a href="javascript:alert(\'href\')" onclick="MenuMachine();return false;">' +rs.fields(0).value + '</a>')
et au passage Value => value