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