Estoy trabajando con un control ActiveX en Internet Explorer 8 que es mostrar un diálogo de guardar archivo que permite al usuario elegir un nombre de archivo y tipo de archivo (jpg, gif, etc.). Estos valores pasan al código y luego se usan en un método diferente para guardar el archivo. Lamentablemente, el método que invoca el diálogo no tiene valor de retorno, y el nombre de archivo y el tipo de archivo se pasan como a los parámetros.Trabajando con parámetros "Out" en JavaScript
La firma del método (expresado en Visual Basic) tiene el siguiente aspecto:
Public Sub SaveFileDialog(_
ByVal bstrDialogType As Variant, _
ByRef pbstrFileName As String, _
ByRef out_pvType As Long _
)
Los dos ByRef parámetros son los parámetros fuera.
He escrito el siguiente código 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);
}
}
El código funciona porque el control ActiveX produce su diálogo, y puede manejar condiciones de error, pero Me parece que no puede encontrar la manera de capturar los valores de fuera parámetros.
En el código gxVideoPlayBack es una referencia al control ActiveX incrustado en el DOM a través de un elemento HTML.
Si JavaScript no funciona para esto, ¿se puede hacer en VBScript?
Como alternativa, puedo implementar mi propio diálogo, pero prefiero usar el que se proporciona.
Así es como la conexión XPConnect cierra el espacio de referencia entre JavaScript y XPCOM, pero no tengo idea si ActiveX hace algo similar. –
@lwburk: sí, lo mismo aquí, simplemente tirando una idea. Creo que la realidad es que los parámetros de "salida" no están disponibles en JScript/JavaScript. – maerics
concepto interesante. Lamentablemente, cuando inicializo las dos variables en un objeto vacío, * SaveFileDialog * arroja una excepción de tipo. Espera una cuerda y un número entero. – RunnerRick