Tôi đang làm việc với điều khiển ActiveX trong Internet Explorer 8 để hiển thị hộp thoại lưu tệp, cho phép người dùng chọn tên tệp và loại tệp (jpg, gif, v.v.). Các giá trị này được chuyển tới mã và sau đó được sử dụng trong một phương thức khác để lưu tệp. Rất tiếc, phương thức gọi hộp thoại không có giá trị trả lại và tên tệp và loại tệp được chuyển thành các tham số ra.Làm việc với tham số "Out" trong JavaScript
Chữ ký của phương pháp (thể hiện trong Visual Basic) trông như thế này:
Public Sub SaveFileDialog(_
ByVal bstrDialogType As Variant, _
ByRef pbstrFileName As String, _
ByRef out_pvType As Long _
)
Hai ByRef thông số là ra tham số.
Tôi đã viết mã JavaScript sau:
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);
}
}
Mã này hoạt động trong đó các điều khiển ActiveX sản xuất thoại của mình, và tôi có thể xử lý các điều kiện lỗi, nhưng tôi dường như không thể tìm ra cách để nắm bắt các giá trị của thông số ra.
Trong mã gxVideoPlayBack là tham chiếu đến điều khiển ActiveX được nhúng trong DOM thông qua phần tử HTML.
Nếu JavaScript sẽ không hoạt động cho điều này, nó có thể được thực hiện trong VBScript không?
Thay vào đó, tôi chỉ có thể triển khai hộp thoại của riêng mình, nhưng muốn sử dụng hộp thoại được cung cấp.
Đó là cách XPConnect kết nối cầu nối khoảng cách giữa JavaScript và XPCOM, nhưng tôi không biết liệu ActiveX có làm được điều tương tự hay không. –
@ lwburk: vâng, cùng ở đây, chỉ cần ném ra một ý tưởng. Tôi nghĩ thực tế là các tham số "out" không có sẵn trong JScript/JavaScript. – maerics
Khái niệm thú vị. Thật không may khi tôi khởi tạo hai biến cho một đối tượng rỗng * SaveFileDialog * ném một ngoại lệ kiểu. Nó mong đợi một chuỗi và một số nguyên. – RunnerRick