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 !
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 blabla
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
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é
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 le
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <a href=\"#\" onclick=\"MenuMachine()\">" + rs.fields(0).Value + "</a>mais franchement je vais le laisser comme ça pour le moment
Code : Sélectionner tout - Visualiser dans une fenêtre à part ; return false;
avec
et je fais tout simplement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function MenuMachine () { parent.JeMeRemplace (NomMachine); }
Un GROS GROS merci à toi E.Bzz pour ton temps et tes compétences.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Encore merci
Tout à fait correct
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 quotes
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href=\"#\" onclick=\"MenuMachine();return fa"+"lse;\">" + rs.fields(0).value + "</a>
c'est quand même plus lisible...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 document.write('<a href="javascript:alert(\'href\')" onclick="MenuMachine();return false;">' +rs.fields(0).value + '</a>')
et au passage Value => value
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
Partager