Run*_*ick 10 javascript internet-explorer activex
我正在使用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 _
)
Run Code Online (Sandbox Code Playgroud)
两个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);
}
}
Run Code Online (Sandbox Code Playgroud)
代码的工作原理是ActiveX控件生成它的对话框,我可以处理错误条件,但我似乎无法弄清楚如何捕获out参数的值.
在代码中,gxVideoPlayBack是通过HTML元素对DOM中嵌入的ActiveX控件的引用.
如果JavaScript不能用于此,可以在VBScript中完成吗?
作为替代方案,我可以实现自己的对话框,但宁可使用提供的对话框.
编辑:似乎在JavaScript/JScript中不可能有"out"参数.
var saveFileName={}, saveFileType={}; // Empty "output" objects.
gxVideoPlayBack.SaveFileDialog("image", saveFileName, saveFileType);
alert(saveFileName.value); // The "value" attribute is assigned ...
alert(saveFileType.value); // ... by the "SaveFileDialog" method?
Run Code Online (Sandbox Code Playgroud)
我想这个想法是这个本机调用的WSH包装器将尝试分配给定输出参数的"value"属性,因此你可以覆盖值setter或者只给它一个带有内置值setter的对象.
| 归档时间: |
|
| 查看次数: |
13818 次 |
| 最近记录: |