当前位置:  开发笔记 > 编程语言 > 正文

如何在Javascript中处理ActiveX事件

如何解决《如何在Javascript中处理ActiveX事件》经验,为你挑选了3个好方法。

这在某种程度上是对这里答案的后续行动.

我有一个自定义ActiveX控件,它引发了一个事件(带有"msg"参数的"ReceiveMessage"),需要在Web浏览器中由Javascript处理.从历史上看,我们已经能够使用以下仅IE语法在不同项目上实现此目的:

function MyControl::ReceiveMessage(msg)
{
   alert(msg);
}

但是,当在掩埋控件的布局内部时,Javascript无法找到控件.具体来说,如果我们把它放到一个普通的HTML页面,它工作正常,但如果我们将它放入由

标签包装的ASPX页面,我们会得到一个"MyControl is undefined"错误.我们尝试过以下变体:

var GetControl = document.getElementById("MyControl");
function GetControl::ReceiveMessage(msg)
{
   alert(msg);
}

...但它会导致Javascript错误"GetControl未定义".

处理从ActiveX控件发送的事件的正确方法是什么?现在我们只对在IE中工作感兴趣.这必须是我们正在做的自定义ActiveX控件.

谢谢.



1> Raelshark..:

我能够使用以下脚本块格式来实现这一点,但我仍然很好奇这是否是最好的方法:




2> Zuhaib..:

我以前在我的应用程序中使用过activex.我将对象标记放在ASP.NET表单中,以下JavaScript适用于我.

function onEventHandler(arg1, arg2){
    // do something
}

window.onload = function(){
    var yourActiveXObject = document.getElementById('YourObjectTagID');
    if(typeof(yourActiveXObject) === 'undefined' || yourActiveXObject === null){
        alert('Unable to load ActiveX');
        return;
    }

    // attach events
    var status = yourActiveXObject.attachEvent('EventName', onEventHandler);
}



3> 小智..:

好的,但是如果你使用C#(.NET 2.0)和继承的UserControl(ActiveX)......使其工作的唯一方法是"扩展"事件的处理程序功能:http: //www.codeproject.com/KB /dotnet/extend_events.aspx?display=Print

我们的朋友Werner Willemsens先生的上述项目链接已经保存了我的项目.如果你不这样做,javascript就无法绑定到事件处理程序.

由于他选择的例子,他以复杂的方式使用"扩展"但是如果你简单地将句柄直接附加到事件本身,它也可以工作.C#ActiveX应支持"ScriptCallbackObject"将事件绑定到javascript函数,如下所示:

  var clock = new ActiveXObject("Clocks.clock");
  var extendedClockEvents = clock.ExtendedClockEvents();
  // Here you assign (subscribe to) your callback method!
  extendedClockEvents.ScriptCallbackObject = clock_Callback; 
  ...
  function clock_Callback(time)
  {
    document.getElementById("text_tag").innerHTML = time;
  }

当然,您必须实现IObjectSafety和其他安全性的东西,以使其更好地工作.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有