我正在使用 Internet Explorer 8 中的 ActiveX 控件,该控件将显示一个保存文件对话框,让用户选择文件名和文件类型(jpg、gif 等)。这些值会被传递给代码,然后在不同的方法中用于保存文件。不幸的是,调用对话框的方法没有返回值,并且文件名和文件类型被作为out参数传递。
该方法的签名(用 Visual Basic 表示)如下:
Public Sub SaveFileDialog( _
ByVal bstrDialogType As Variant, _
ByRef pbstrFileName As String, _
ByRef out_pvType As Long _
)
这两个ByRef参数是out参数。
我编写了以下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);
}
}
代码可以运行,ActiveX控件可以产生其对话框,我也可以处理错误条件,但是我似乎无法弄清如何捕获输出参数的值。在代码中,gxVideoPlayBack是通过HTML元素嵌入DOM中的ActiveX控件的引用。如果JavaScript无法实现这一点,是否可以使用VBScript?作为替代方案,我可以编写自己的对话框,但更愿意使用提供的对话框。