OVH Cloud OVH Cloud

Equivalent de GetRef en JS

7 réponses
Avatar
Guy
bonjour à tous,

j'utilise un script js qui ouvre IE avec une page specifique et lorsque
j'appuie sur le bouton OK, je voudrais recup les donnais dans mon script JS
(des : <input type="hidden" name="test" id="test" value...>)
en VBS j'avais un sub qui récup les données et un GetRef sur ce sub ...

si quelqu'un peut me donner un exemple de code je lui serait très
reconnaissant ...

Merci d'avance à vous tous,
Amitié...

7 réponses

Avatar
Jean
Bonjour,

Simplement an appelant la fonction par référence :

objet.evenement=fonction

ex:

<!---8<---Jean - JMST - Belgium--->
<script defer>
B1.onclick=message
function message(){
alert('ok')
}
</script>
<input type='button' id='B1'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
bonjour à tous,

j'utilise un script js qui ouvre IE avec une page specifique et lorsque
j'appuie sur le bouton OK, je voudrais recup les donnais dans mon script JS
(des : <input type="hidden" name="test" id="test" value...>)
en VBS j'avais un sub qui récup les données et un GetRef sur ce sub ...

si quelqu'un peut me donner un exemple de code je lui serait très
reconnaissant ...

Merci d'avance à vous tous,
Amitié...


Avatar
Guy
Cela fonctionne niquel ...
merci beaucoup Jean...


Bonjour,

Simplement an appelant la fonction par référence :

objet.evenement=fonction

ex:

<!---8<---Jean - JMST - Belgium--->
<script defer>
B1.onclick=message
function message(){
alert('ok')
}
</script>
<input type='button' id='B1'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
bonjour à tous,

j'utilise un script js qui ouvre IE avec une page specifique et lorsque
j'appuie sur le bouton OK, je voudrais recup les donnais dans mon script JS
(des : <input type="hidden" name="test" id="test" value...>)
en VBS j'avais un sub qui récup les données et un GetRef sur ce sub ...

si quelqu'un peut me donner un exemple de code je lui serait très
reconnaissant ...

Merci d'avance à vous tous,
Amitié...









Avatar
Guy
jai juste un petit problème qui s'allie à ca, c'est que si je click sur la
croix de ma fenêtre IE mon script tourne toujours (car il attend le click du
bouton OK), comment je pourrais tester l'existence de ma fenêtre sur ma
boucle ...

Merci d'avance


Cela fonctionne niquel ...
merci beaucoup Jean...


Bonjour,

Simplement an appelant la fonction par référence :

objet.evenement=fonction

ex:

<!---8<---Jean - JMST - Belgium--->
<script defer>
B1.onclick=message
function message(){
alert('ok')
}
</script>
<input type='button' id='B1'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
bonjour à tous,

j'utilise un script js qui ouvre IE avec une page specifique et lorsque
j'appuie sur le bouton OK, je voudrais recup les donnais dans mon script JS
(des : <input type="hidden" name="test" id="test" value...>)
en VBS j'avais un sub qui récup les données et un GetRef sur ce sub ...

si quelqu'un peut me donner un exemple de code je lui serait très
reconnaissant ...

Merci d'avance à vous tous,
Amitié...











Avatar
Jean
Bonjour,

Vous devez gérer l'événement onunload de l'objet window.
Par exemple dans ce qui suit le clic sur le bouton B1 est simulé 'à l'aide de la méthode click de l'objet) sur l'événement onunload
de la fenêtre (window).

<!---8<---Jean - JMST - Belgium--->
<script defer>
window.onunload=cliquer_B1
B1.onclick=message
function message(){
alert('ok')
}
function cliquer_B1(){
B1.click()
}
</script>
<input id='B1' type='button' value='OK'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
jai juste un petit problème qui s'allie à ca, c'est que si je click sur la
croix de ma fenêtre IE mon script tourne toujours (car il attend le click du
bouton OK), comment je pourrais tester l'existence de ma fenêtre sur ma
boucle ...

Merci d'avance


Cela fonctionne niquel ...
merci beaucoup Jean...


Bonjour,

Simplement an appelant la fonction par référence :

objet.evenement=fonction

ex:

<!---8<---Jean - JMST - Belgium--->
<script defer>
B1.onclick=message
function message(){
alert('ok')
}
</script>
<input type='button' id='B1'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
bonjour à tous,

j'utilise un script js qui ouvre IE avec une page specifique et lorsque
j'appuie sur le bouton OK, je voudrais recup les donnais dans mon script JS
(des : <input type="hidden" name="test" id="test" value...>)
en VBS j'avais un sub qui récup les données et un GetRef sur ce sub ...

si quelqu'un peut me donner un exemple de code je lui serait très
reconnaissant ...

Merci d'avance à vous tous,
Amitié...













Avatar
Guy
j'ai essayai tout ca mais je n'y arrive toujours pas donc je vous poste tout
mon environnement :
j'ai un script JS qui ouvre ma page html, une fois ouverte je teste le
bouton Ok avec une boucle derrière :

// script
objDoc.frm.UsrBtOk.onclick = UsrBtOk_Onclick;
objDoc.onunload = CancelCreate;
bDone = false;
Cancel = false;
while (!bDone){
WScript.Sleep(100);
}

function CancelCreate(){
bDone = true;
Cancel = true;
}
// fin du script

vu que je met le bDone à true sur le unload cela devrais fonctionner mais
rien ne ce passe le script tourne indéfiniment (car a mon avis la propriété
unload ne fonctionne pas dans mon cas)...

merci d'avance de consacrer du temps sur mes demandes ...
Guy


Bonjour,

Vous devez gérer l'événement onunload de l'objet window.
Par exemple dans ce qui suit le clic sur le bouton B1 est simulé 'à l'aide de la méthode click de l'objet) sur l'événement onunload
de la fenêtre (window).

<!---8<---Jean - JMST - Belgium--->
<script defer>
window.onunload=cliquer_B1
B1.onclick=message
function message(){
alert('ok')
}
function cliquer_B1(){
B1.click()
}
</script>
<input id='B1' type='button' value='OK'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
jai juste un petit problème qui s'allie à ca, c'est que si je click sur la
croix de ma fenêtre IE mon script tourne toujours (car il attend le click du
bouton OK), comment je pourrais tester l'existence de ma fenêtre sur ma
boucle ...

Merci d'avance


Cela fonctionne niquel ...
merci beaucoup Jean...


Bonjour,

Simplement an appelant la fonction par référence :

objet.evenement=fonction

ex:

<!---8<---Jean - JMST - Belgium--->
<script defer>
B1.onclick=message
function message(){
alert('ok')
}
</script>
<input type='button' id='B1'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
bonjour à tous,

j'utilise un script js qui ouvre IE avec une page specifique et lorsque
j'appuie sur le bouton OK, je voudrais recup les donnais dans mon script JS
(des : <input type="hidden" name="test" id="test" value...>)
en VBS j'avais un sub qui récup les données et un GetRef sur ce sub ...

si quelqu'un peut me donner un exemple de code je lui serait très
reconnaissant ...

Merci d'avance à vous tous,
Amitié...



















Avatar
Jean
Bonjour,

Là c'est différent, vous utilisez l'objet InternetExplorer.Application dans un script WSH si je comprends bien.
(Au passage, lorsque c'est possible, il sera préférable d'utiliser un fichier HTA)

Soit vous utilisez l'objet InternetExplorer.Application juste pour afficher la page dans un navigateur "personalisé" et vous gérez
l'événement onunload directement dans la page (dans une balise script).

Soit vous pouvez gérer l'événement OnQuit de l'objet au sein du script WSH.
Pour y avoir accès vous *devez* utliser la méthode CreateObject *de l'objet WScript* dont la syntaxe permet d'accéder aux événements
d'un objet à l'aide de son argument strPrefix :
http://msdn.microsoft.com/library/en-us/script56/html/wsMthCreateObject.asp

Il faut ouvrir le document avec InternetExplorer.Application puis mettre une boucle de pause (sinon le script est quitté, l'objet
est déconnecté et l'événement n'est donc plus géré).
Lorsque l'événement OnQuit sera appelé le script sera quitté à l'aide de la méthode Quit de l'objet WScript.

Pour être concret voici un exemple simple.

Lorsque l'événement OnQuit de l'objet InternetExlorer.Application survient, le bouton est cliqué en utilisant la méthode click de
l'objet (accédé via la propriété Document de l'objet InternetExplorer.Application) et le script est quitté.
Pour éviter que le bouton ne soit cliqué 2 fois (une fois dans la page, une fois en quittant), je fais diparaître le bouton lorsque
l'on clique dessus à l'aide du style Display.
Je teste la valeur du style Display dans l'événement OnQuit pour savoir si le bouton a déjà été cliqué ou pas.
J'ai aussi masqué une bonne partie des possibilités de navigation dans le document pour simplifier.

Il est évident que vous devrez faire des adaptations en fonction de votre situation.

Le document "IE_OnQuit.HTM" doit se trouver dans le même répertoire que le script pour tester.

Voici les codes du script (en JScript et en VBScript) et de IE_OnQuit.HTM utilisé par ceux-ci:
http://automation.eu.tf/IE_OnQuit.JS
http://automation.eu.tf/IE_OnQuit.VBS
http://automation.eu.tf/IE_OnQuit.HTM

'---8<---IE_OnQuit.VBS---Jean-JMST-Belgium---
Set IE=WScript.CreateObject("InternetExplorer.Application","IEApp_")

With IE
.Navigate(Repertoire_Script&"IE_OnQuit.HTM")
.AddressBarúlse
.MenuBarúlse
.ToolBarúlse
.Visible=true
While Not .ReadyState=4:WScript.Sleep(10):Wend
End With

While True:WScript.Sleep 10:Wend

Sub IEApp_OnQuit
With IE.Document.All.B1
If Not .Style.Display="none" Then .Click
End With
WScript.Quit
End Sub

Function Repertoire_Script
With WScript
Repertoire_Script=Mid(_
.ScriptFullName,_
1,_
Len(.ScriptFullName)-Len(.ScriptName)_
)
End With
End Function
'---8<---IE_OnQuit.VBS---Jean-JMST-Belgium---

//---8<---IE_OnQuit.JS---Jean-JMST-Belgium---
IE=WScript.CreateObject('InternetExplorer.Application','IEApp_')

with(IE){
navigate(repertoire_script()+'IE_OnQuit.HTM')
addressbarúlse
menubarúlse
toolbarúlse
visible=true
while(readyState!==4){WScript.Sleep(10)}
}

while(true){WScript.Sleep(10)}

function IEApp_OnQuit(){
with(IE.document.all.B1){
if(style.display!=='none'){click()}
}
WScript.Quit()
}

function repertoire_script(){
with(WScript){
return scriptFullName
.substr
(
0,scriptFullName.length-scriptName.length
)
}
}
//---8<---IE_OnQuit.JS---Jean-JMST-Belgium---

<!---8<---IE_OnQuit.HTM---Jean-JMST-Belgium--->
<script defer>
function document.oncontextmenu(){
return false
}
function B1.onclick(){
alert('clic sur B1')
this.style.display='none'
}
</script>
<input id='B1' type='button' value='OK'>
<!---8<---IE_OnQuit.HTM---Jean-JMST-Belgium--->


Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
j'ai essayai tout ca mais je n'y arrive toujours pas donc je vous poste tout
mon environnement :
j'ai un script JS qui ouvre ma page html, une fois ouverte je teste le
bouton Ok avec une boucle derrière :

// script
objDoc.frm.UsrBtOk.onclick = UsrBtOk_Onclick;
objDoc.onunload = CancelCreate;
bDone = false;
Cancel = false;
while (!bDone){
WScript.Sleep(100);
}

function CancelCreate(){
bDone = true;
Cancel = true;
}
// fin du script

vu que je met le bDone à true sur le unload cela devrais fonctionner mais
rien ne ce passe le script tourne indéfiniment (car a mon avis la propriété
unload ne fonctionne pas dans mon cas)...

merci d'avance de consacrer du temps sur mes demandes ...
Guy


Bonjour,

Vous devez gérer l'événement onunload de l'objet window.
Par exemple dans ce qui suit le clic sur le bouton B1 est simulé 'à l'aide de la méthode click de l'objet) sur l'événement
onunload
de la fenêtre (window).

<!---8<---Jean - JMST - Belgium--->
<script defer>
window.onunload=cliquer_B1
B1.onclick=message
function message(){
alert('ok')
}
function cliquer_B1(){
B1.click()
}
</script>
<input id='B1' type='button' value='OK'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
jai juste un petit problème qui s'allie à ca, c'est que si je click sur la
croix de ma fenêtre IE mon script tourne toujours (car il attend le click du
bouton OK), comment je pourrais tester l'existence de ma fenêtre sur ma
boucle ...

Merci d'avance


Cela fonctionne niquel ...
merci beaucoup Jean...


Bonjour,

Simplement an appelant la fonction par référence :

objet.evenement=fonction

ex:

<!---8<---Jean - JMST - Belgium--->
<script defer>
B1.onclick=message
function message(){
alert('ok')
}
</script>
<input type='button' id='B1'>
<!---8<---Jean - JMST - Belgium--->

Amicalement,

Jean - JMST
Belgium

"Guy" a écrit dans le message de news:
bonjour à tous,

j'utilise un script js qui ouvre IE avec une page specifique et lorsque
j'appuie sur le bouton OK, je voudrais recup les donnais dans mon script JS
(des : <input type="hidden" name="test" id="test" value...>)
en VBS j'avais un sub qui récup les données et un GetRef sur ce sub ...

si quelqu'un peut me donner un exemple de code je lui serait très
reconnaissant ...

Merci d'avance à vous tous,
Amitié...





















Avatar
Guy
Je te remercie enormement ...
j'ai réussi grâce à tes informations de trouver une solution ... peut-être
un peu archaique ca fonctionne ...
je les poste pour infos :


// JS Script
---------------------------------------------------------------------------------------->

// Declarations of Object vars
var objIE = WScript.CreateObject("InternetExplorer.Application","IEApp_");

// Declarations of vars
var LaunchPath = WScript.ScriptFullName;
LaunchPath =
LaunchPath.substring(0,LaunchPath.length-WScript.ScriptName.length);

objIE.AddressBar = false;
objIE.MenuBar = false;
objIE.ToolBar = false;
objIE.StatusBar = false;
objIE.Resizable = false;
objIE.FullScreen = true;

objIE.Navigate(LaunchPath+htmlfile);

while(objIE.readyState!==4){WScript.Sleep(10)}


objIE.Visible = true;

var objDoc = objIE.Document;

objDoc.frm.UsrBtOk.onclick = UsrBtOk_Onclick;
objDoc.frm.UsrBtQuit.onclick = UsrBtQuit_Onclick;
objDoc.frm.UsrBtCancel.onclick = UsrBtCancel_Onclick;

Cancel = false;
bDone = false;

while(!bDone){WScript.Sleep(10)}

if(Cancel){
WScript.Echo("Opération annulée !!");
WScript.Quit(1);
}

/************************************************************************************
* Function UsrBtOk_Onclick()
* last update : 18/10/04
* Description : Cancel User Creatio
************************************************************************************/
function UsrBtOk_Onclick(){
objDoc.frm.UsrBtCancel.style.display = "none";
objIE.Quit();

/************************************************************************************
* Function UsrBtCancel_Onclick()
* last update : 18/10/04
* Description : Cancel User Creatio
************************************************************************************/
function UsrBtCancel_Onclick(){
objDoc.frm.UsrBtCancel.style.display = "none";
Cancel = true;
objIE.Quit();

//************************************************************************************

/************************************************************************************
* Function UsrBtQuit_Onclick()
* last update : 18/10/04
* Description : Continue the script if window is unloa
************************************************************************************/
function UsrBtQuit_Onclick(){
Cancel = true;

//************************************************************************************

/************************************************************************************
* Function IEApp_OnQuit()
* last update : 13/10/04
* Description : Manage IE Quit
************************************************************************************/
function IEApp_OnQuit(){
bDone = true;
if(objDoc.frm.UsrBtCancel.style.display !== "none"){
objDoc.frm.UsrBtQuit.click();
}
}

// JS Script
<------------------------------------------------------------------------------------------

Merci encore et encore