Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从activex调用javascript函数_Javascript_Activex - Fatal编程技术网

从activex调用javascript函数

从activex调用javascript函数,javascript,activex,Javascript,Activex,我正在构建一个小activex控件。我知道activex不能直接调用javascript函数,但需要处理事件。因此,我创建了一个事件,它是从codeproject的代码示例复制而来的 该事件似乎只在某些情况下起作用:当调用javascript函数并立即引发该事件时,该事件才起作用。当我的javascript函数调用执行长操作且仅引发事件的activex方法时,它不起作用,以下是我的意思示例: Activex事件: [Guid("68BD4E0D-D7BC-4cf6-BEB7-CAB950161E

我正在构建一个小activex控件。我知道activex不能直接调用javascript函数,但需要处理事件。因此,我创建了一个事件,它是从codeproject的代码示例复制而来的

该事件似乎只在某些情况下起作用:当调用javascript函数并立即引发该事件时,该事件才起作用。当我的javascript函数调用执行长操作且仅引发事件的activex方法时,它不起作用,以下是我的意思示例:

Activex事件:

[Guid("68BD4E0D-D7BC-4cf6-BEB7-CAB950161E79")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ControlEvents
{
    //Add a DispIdAttribute to any members in the source interface to specify the COM DispId.
    [DispId(0x60020001)]
    void OnClose(string redirectUrl); //This method will be visible from JS
}
有效的调用示例:

    [ComVisible(true)]


public void Close()
    {
        if (OnClose != null)
        {
            OnClose("my test"); //Calling event that will be catched in JS
        }
        else
        {
            MessageBox.Show("No Event Attached"); //If no events are attached send message.
        }
    }
失败的调用示例如下:

[ComVisible(true)]
        public void Open()
        {
            try
            {
                Start();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
使用函数Start调用一个非常长的方法,该方法每隔几分钟引发一次事件,并将信息发送回javascript


我似乎不明白为什么它不起作用。少了什么?如果问题不清楚,我很抱歉,我得到的错误也不清楚,因此请提问,我会细化问题。

我在您的代码中没有看到任何事件声明。事情应该是这样的

公共委托void EvenHanderDelegate(字符串重定向URL)


公共事件环境管理

我在代码中没有看到任何事件声明。事情应该是这样的

公共委托void EvenHanderDelegate(字符串重定向URL)

公共事件环境管理