现在有一个COM组件,想在Web中测试一下,但是没有用过JavaScrip,不是到怎么响应COM的事件。还请各位高手给个详细的例子。

解决方案 »

  1.   

    组件里面必须有相应的接口向web页公开. 
    比如说media player组件有play方法是公开的, 那么你调用 mp.play() 就可以使这个播放器控件开始播放.
      

  2.   

    谢谢1楼。
    我知道怎样在Web中调用组件的方法。
    我现在的问题是,如果组件有一个事件,或者消息,需要通知Web,那该怎么办?
    组件中实现了几个事件,就是为了让调用者(Web)能够处理这些事件,已达到互动。我不知道怎么才能让Web处理这些事件。
      

  3.   

    可以在组件里面指定当事件发生时执行外部动作嘛. 比如说 xmlhttp组件的 onreadystatechange, 就是当状态改变时发生.1.组件在有事件时主动执行外部定义的处理函数
    2.外部定时检测组件的状态, 发现有改变时执行某个动作
      

  4.   


    这也是可行的办法。但是通过链接点事件行吗?
    因为组件的编写应该是不考虑调用者的语言的。如果不是用COM本身的事件,那么对于Web,就要单独实现一个COM,二期如果Web的脚本不同,COM也要不同。
      

  5.   

    不知你说的 "通过链接点事件" 该怎么理解.
    但有一点, 组件调用外部的代码, 是用外部代码的引擎来执行的, 所以不需要考虑调用者的语言.
    如果页面上有多个COM组件, 要在组件间进行通信:
      如果不能直接互相调用对方的方法, 可以使用外部脚本做代理实现.
      

  6.   

    说的具体点吧。
    加入说我的组件CLSID:1DEA726F-9D1D-432B-9C00-959E556229C8
    有一个事件是OnStart。
    那么应该怎样用javascript响应这个事件?
    请 xiangtanboy给一个简单的例子。多谢了。对javascrip实在知道的太少。
      

  7.   

    <object classid="CLSID:1DEA726F-9D1D-432B-9C00-959E556229C8" id="myCom"></object>
    <script type="text/javascript" language="javascript">
    function onStart()
    {
    //start时要执行的动作
    }
    document.getElementById('myCom').onStart = onStart;
    </script>
      

  8.   

    是不是使用JS不能响应COM的事件?请有经验的高手明示。
      

  9.   

    类似这样:
    <script language="javascript" for="myCom" event="OnStart">
    alert('OnStart');
    </script>
      

  10.   

    谢谢dh20156
    我这样试过,不行。
    不知道这种方法对组件的事件有什么特殊要求。我的这个组件是通过连接点实现的。
    我查了一些资料,说微软的很过软件都支持连接点实现的事件的,比如IE,office。所以我想用JS应该可以实现开头说的功能。
    另外这个组件的事件实现是没有问题的。我在MFC中试过了,一切正常。
    不知道JS中的问题出在哪里。
    哪位大侠有成功的例子吗?给我学习一下。
      

  11.   

    可能MFC里面调用和JS里面调用是不同的吧.
    你要确认一点, onStart是不是对外公开了.
    alert(typeof myCom.onStart) 如果显示 undefined, 那么JS是不能访问到这个接口的.
      

  12.   

    不是让JS访问组件的这个接口,而是要让JS实现一个函数,来让组件来访问。
      

  13.   

    让JS实现一个函数,来让组件来访问,这个有点儿难度,也不符合ActiveX/COM组件的设计理念。
    你是不是想隐藏源代码呀?
      

  14.   


    谢谢各位,上面的方法是正确的。
    之前没有成功,是组件的问题,需要实现接口IProvideClassInfo2,组件的事件才能被JS捕获。
      

  15.   

    微软是否为ActiveX/COM提供了简单途径访问web文档对象,我没研究过。
    但是可以提供给你一个线索,Flash里面是可以调用页面js函数的,Flash也就是页面中的一个ActiveX控件。
      

  16.   

    请问可以在外部调用COM的程序中在COM事件响应中调用COM方法吗?