asp-classic - 是否可以在经典 ASP 中处理来自 activeX 对象的事件

标签 asp-classic jscript

从我最近发布的另一个问题来看,经典 ASP 似乎无法处理 activeX 对象可能抛出的事件。

任何人都可以验证这一点吗?如果可以,我该怎么做?

最佳答案

Is it possible to handle events from an activeX object in Classic ASP

不,如果您谈论的是 COM 事件。
但是,根据“事件”一词的含义,答案是“也许”。

参见Create COM/ActiveXObject in C#, use from JScript, with simple event

可以创建一个 COM 类/ActiveX 事物,在 JScript/Classic ASP 中实例化它,并让 COM 类调用在 ASP 页面中定义的回调。这不是通过 COM 事件完成的,但它可能满足您的要求。

ASP 代码可能如下所示:

<script language="Javascript" runat="server">

var greet = Server.CreateObject("Ionic.Greet");

greet.onHello = function(arg, num) {
    Response.Write("onHello (ASP) invoked.<br/>\n");
    Response.Write("  num = " + num + "  stat=" + arg.status + "<br/>\n");
};

response = greet.Hello("ASP");
Response.Write("response: " + response + "<br/>\n");
Response.Write("status: " + greet.status + "<br/>\n");

</script>

仅当所创建的 COM 类公开可设置的属性,然后调用该属性的“默认方法”时,此方法才有效。像这样:

public partial class Greet : IGreet
{
    public Object onHello { get; set; }

    public String Hello(string name)
    {
        var r = FireEvent();
        return "Why, Hello, " + name + "!!!" + r;
    }
}

...其中 FireEvent 是这样的:

private string FireEvent()
{
    if (onHello == null) return " (N/A)";
    onHello
        .GetType()
        .InvokeMember
        ("",
         BindingFlags.InvokeMethod,
         null,
         onHello,
         new object [] {});

    return "ok";
}

显然,如果您有一个无法更改的 COM 类,并且它使用 COM 事件,则此方法将不适用。

关于asp-classic - 是否可以在经典 ASP 中处理来自 activeX 对象的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11160344/

相关文章:

asp-classic - Classic ASP/JScript 在性能、可伸缩性或可靠性方面是否存在劣势?

encoding - 经典的ASP字符编码

javascript - 检查 Javascript 中 ASP 值的问题

c# - 查看 MVC 2 中无法正常工作的数据

javascript - 按钮出现时自动点击 - Chrome/Tampermonkey

javascript - 在实现文档就绪功能时避免 Javascript 函数预期错误

javascript - JavaScript 中有 "createObject"吗?

download - 如何使用客户端 JScript 从注释下载附件?

javascript - 如何添加不带单选按钮的评论文本字段

mysql - 从 ASP 调用 Mysql SP 会产生错误