我正在使用Internet Explorer 8中的ActiveX控件來顯示保存文件對話框,讓用戶選擇文件名和文件類型(jpg,gif等)。這些值被傳遞給代碼,然後用於不同的方法來保存文件。不幸的是,調用對話框的方法沒有返回值,並且文件名和文件類型被傳入out參數。在JavaScript中使用「Out」參數
的方法(在Visual Basic中表示)的簽名看起來是這樣的:
Public Sub SaveFileDialog(_
ByVal bstrDialogType As Variant, _
ByRef pbstrFileName As String, _
ByRef out_pvType As Long _
)
兩個的ByRef參數是出參數。
我寫了下面的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中完成?
作爲替代方案,我可以實現自己的對話框,但寧可使用提供的對話框。
這就是XPConnect連接如何連接JavaScript和XPCOM之間的ref差距,但我不知道ActiveX是否做了類似的事情。 –
@lwburk:是的,這裏也一樣,只是拋出一個想法。我認爲現實是「out」參數在JScript/JavaScript中不可用。 – maerics
有趣的概念。不幸的是,當我將這兩個變量初始化爲一個空對象時,* SaveFileDialog *拋出了一個類型異常。它期望一個字符串和一個整數。 – RunnerRick