Sto lavorando con un controllo ActiveX in Internet Explorer 8 che consente di visualizzare una finestra di dialogo di salvataggio del file che consente all'utente di scegliere un nome e un tipo di file (jpg, gif, ecc.). Questi valori vengono passati al codice e quindi vengono utilizzati in un metodo diverso per salvare il file. Sfortunatamente il metodo che richiama la finestra di dialogo non ha alcun valore di ritorno, e il nome del file e il tipo di file vengono passati come sui parametri.Utilizzo dei parametri "Out" in JavaScript
La firma del metodo (espresso in Visual Basic) si presenta così:
Public Sub SaveFileDialog(_
ByVal bstrDialogType As Variant, _
ByRef pbstrFileName As String, _
ByRef out_pvType As Long _
)
I due ByRef parametri sono gli fuori parametri.
Ho scritto il seguente codice JavaScript:
try
{
var saveFileName, saveFileType; // out variables
gxVideoPlayBack.SaveFileDialog("image", saveFileName, saveFileType);
alert(saveFileName); // displays "undefined"
alert(saveFileType); // displays "undefined"
}
catch(error)
{
if(!error.number === -2147221484) // User clicked cancel.
{
alert(error.message);
}
}
Il codice funziona in quanto il controllo ActiveX produce il suo dialogo, e io in grado di gestire le condizioni di errore, ma io non riesco a capire come acquisire i valori dei parametri out.
Nel codice gxVideoPlayBack è un riferimento al controllo ActiveX incorporato nel DOM tramite un elemento HTML.
Se JavaScript non funziona per questo, può essere fatto in VBScript?
In alternativa, posso solo implementare la mia finestra di dialogo, ma preferirei utilizzare quella fornita.
Ecco come XPConnect collega il gap tra ref e XPCOM, ma non ho idea se ActiveX faccia qualcosa di simile. –
@lwburk: sì, lo stesso qui, solo buttando fuori un'idea. Penso che la realtà sia che i parametri "out" non sono disponibili in JScript/JavaScript. – maerics
Concetto interessante. Sfortunatamente, quando inizializzo le due variabili su un oggetto vuoto, * SaveFileDialog * genera un'eccezione di tipo. Si aspetta una stringa e un intero. – RunnerRick