19 个解决方案
#1
组件里面必须有相应的接口向web页公开.
比如说media player组件有play方法是公开的, 那么你调用 mp.play() 就可以使这个播放器控件开始播放.
比如说media player组件有play方法是公开的, 那么你调用 mp.play() 就可以使这个播放器控件开始播放.
#2
谢谢1楼。
我知道怎样在Web中调用组件的方法。
我现在的问题是,如果组件有一个事件,或者消息,需要通知Web,那该怎么办?
组件中实现了几个事件,就是为了让调用者(Web)能够处理这些事件,已达到互动。我不知道怎么才能让Web处理这些事件。
我知道怎样在Web中调用组件的方法。
我现在的问题是,如果组件有一个事件,或者消息,需要通知Web,那该怎么办?
组件中实现了几个事件,就是为了让调用者(Web)能够处理这些事件,已达到互动。我不知道怎么才能让Web处理这些事件。
#3
可以在组件里面指定当事件发生时执行外部动作嘛. 比如说 xmlhttp组件的 onreadystatechange, 就是当状态改变时发生.
1.组件在有事件时主动执行外部定义的处理函数
2.外部定时检测组件的状态, 发现有改变时执行某个动作
1.组件在有事件时主动执行外部定义的处理函数
2.外部定时检测组件的状态, 发现有改变时执行某个动作
#4
这也是可行的办法。但是通过链接点事件行吗?
因为组件的编写应该是不考虑调用者的语言的。如果不是用COM本身的事件,那么对于Web,就要单独实现一个COM,二期如果Web的脚本不同,COM也要不同。
#5
不知你说的 "通过链接点事件" 该怎么理解.
但有一点, 组件调用外部的代码, 是用外部代码的引擎来执行的, 所以不需要考虑调用者的语言.
如果页面上有多个COM组件, 要在组件间进行通信:
如果不能直接互相调用对方的方法, 可以使用外部脚本做代理实现.
但有一点, 组件调用外部的代码, 是用外部代码的引擎来执行的, 所以不需要考虑调用者的语言.
如果页面上有多个COM组件, 要在组件间进行通信:
如果不能直接互相调用对方的方法, 可以使用外部脚本做代理实现.
#6
说的具体点吧。
加入说我的组件CLSID:1DEA726F-9D1D-432B-9C00-959E556229C8
有一个事件是OnStart。
那么应该怎样用javascript响应这个事件?
请 xiangtanboy给一个简单的例子。多谢了。对javascrip实在知道的太少。
加入说我的组件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
没有成功。没有调用指定的那个函数。
#9
还没有解决问题。
还请高手赐教。
还请高手赐教。
#10
是不是使用JS不能响应COM的事件?请有经验的高手明示。
#11
类似这样:
<script language="javascript" for="myCom" event="OnStart">
alert('OnStart');
</script>
#12
谢谢dh20156
我这样试过,不行。
不知道这种方法对组件的事件有什么特殊要求。我的这个组件是通过连接点实现的。
我查了一些资料,说微软的很过软件都支持连接点实现的事件的,比如IE,office。所以我想用JS应该可以实现开头说的功能。
另外这个组件的事件实现是没有问题的。我在MFC中试过了,一切正常。
不知道JS中的问题出在哪里。
哪位大侠有成功的例子吗?给我学习一下。
我这样试过,不行。
不知道这种方法对组件的事件有什么特殊要求。我的这个组件是通过连接点实现的。
我查了一些资料,说微软的很过软件都支持连接点实现的事件的,比如IE,office。所以我想用JS应该可以实现开头说的功能。
另外这个组件的事件实现是没有问题的。我在MFC中试过了,一切正常。
不知道JS中的问题出在哪里。
哪位大侠有成功的例子吗?给我学习一下。
#13
可能MFC里面调用和JS里面调用是不同的吧.
你要确认一点, onStart是不是对外公开了.
alert(typeof myCom.onStart) 如果显示 undefined, 那么JS是不能访问到这个接口的.
你要确认一点, onStart是不是对外公开了.
alert(typeof myCom.onStart) 如果显示 undefined, 那么JS是不能访问到这个接口的.
#14
不是让JS访问组件的这个接口,而是要让JS实现一个函数,来让组件来访问。
#15
请高手指教啊。
#16
让JS实现一个函数,来让组件来访问,这个有点儿难度,也不符合ActiveX/COM组件的设计理念。
你是不是想隐藏源代码呀?
你是不是想隐藏源代码呀?
#17
谢谢各位,上面的方法是正确的。
之前没有成功,是组件的问题,需要实现接口IProvideClassInfo2,组件的事件才能被JS捕获。
#18
微软是否为ActiveX/COM提供了简单途径访问web文档对象,我没研究过。
但是可以提供给你一个线索,Flash里面是可以调用页面js函数的,Flash也就是页面中的一个ActiveX控件。
但是可以提供给你一个线索,Flash里面是可以调用页面js函数的,Flash也就是页面中的一个ActiveX控件。
#19
请问可以在外部调用COM的程序中在COM事件响应中调用COM方法吗?
#20
#1
组件里面必须有相应的接口向web页公开.
比如说media player组件有play方法是公开的, 那么你调用 mp.play() 就可以使这个播放器控件开始播放.
比如说media player组件有play方法是公开的, 那么你调用 mp.play() 就可以使这个播放器控件开始播放.
#2
谢谢1楼。
我知道怎样在Web中调用组件的方法。
我现在的问题是,如果组件有一个事件,或者消息,需要通知Web,那该怎么办?
组件中实现了几个事件,就是为了让调用者(Web)能够处理这些事件,已达到互动。我不知道怎么才能让Web处理这些事件。
我知道怎样在Web中调用组件的方法。
我现在的问题是,如果组件有一个事件,或者消息,需要通知Web,那该怎么办?
组件中实现了几个事件,就是为了让调用者(Web)能够处理这些事件,已达到互动。我不知道怎么才能让Web处理这些事件。
#3
可以在组件里面指定当事件发生时执行外部动作嘛. 比如说 xmlhttp组件的 onreadystatechange, 就是当状态改变时发生.
1.组件在有事件时主动执行外部定义的处理函数
2.外部定时检测组件的状态, 发现有改变时执行某个动作
1.组件在有事件时主动执行外部定义的处理函数
2.外部定时检测组件的状态, 发现有改变时执行某个动作
#4
这也是可行的办法。但是通过链接点事件行吗?
因为组件的编写应该是不考虑调用者的语言的。如果不是用COM本身的事件,那么对于Web,就要单独实现一个COM,二期如果Web的脚本不同,COM也要不同。
#5
不知你说的 "通过链接点事件" 该怎么理解.
但有一点, 组件调用外部的代码, 是用外部代码的引擎来执行的, 所以不需要考虑调用者的语言.
如果页面上有多个COM组件, 要在组件间进行通信:
如果不能直接互相调用对方的方法, 可以使用外部脚本做代理实现.
但有一点, 组件调用外部的代码, 是用外部代码的引擎来执行的, 所以不需要考虑调用者的语言.
如果页面上有多个COM组件, 要在组件间进行通信:
如果不能直接互相调用对方的方法, 可以使用外部脚本做代理实现.
#6
说的具体点吧。
加入说我的组件CLSID:1DEA726F-9D1D-432B-9C00-959E556229C8
有一个事件是OnStart。
那么应该怎样用javascript响应这个事件?
请 xiangtanboy给一个简单的例子。多谢了。对javascrip实在知道的太少。
加入说我的组件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
没有成功。没有调用指定的那个函数。
#9
还没有解决问题。
还请高手赐教。
还请高手赐教。
#10
是不是使用JS不能响应COM的事件?请有经验的高手明示。
#11
类似这样:
<script language="javascript" for="myCom" event="OnStart">
alert('OnStart');
</script>
#12
谢谢dh20156
我这样试过,不行。
不知道这种方法对组件的事件有什么特殊要求。我的这个组件是通过连接点实现的。
我查了一些资料,说微软的很过软件都支持连接点实现的事件的,比如IE,office。所以我想用JS应该可以实现开头说的功能。
另外这个组件的事件实现是没有问题的。我在MFC中试过了,一切正常。
不知道JS中的问题出在哪里。
哪位大侠有成功的例子吗?给我学习一下。
我这样试过,不行。
不知道这种方法对组件的事件有什么特殊要求。我的这个组件是通过连接点实现的。
我查了一些资料,说微软的很过软件都支持连接点实现的事件的,比如IE,office。所以我想用JS应该可以实现开头说的功能。
另外这个组件的事件实现是没有问题的。我在MFC中试过了,一切正常。
不知道JS中的问题出在哪里。
哪位大侠有成功的例子吗?给我学习一下。
#13
可能MFC里面调用和JS里面调用是不同的吧.
你要确认一点, onStart是不是对外公开了.
alert(typeof myCom.onStart) 如果显示 undefined, 那么JS是不能访问到这个接口的.
你要确认一点, onStart是不是对外公开了.
alert(typeof myCom.onStart) 如果显示 undefined, 那么JS是不能访问到这个接口的.
#14
不是让JS访问组件的这个接口,而是要让JS实现一个函数,来让组件来访问。
#15
请高手指教啊。
#16
让JS实现一个函数,来让组件来访问,这个有点儿难度,也不符合ActiveX/COM组件的设计理念。
你是不是想隐藏源代码呀?
你是不是想隐藏源代码呀?
#17
谢谢各位,上面的方法是正确的。
之前没有成功,是组件的问题,需要实现接口IProvideClassInfo2,组件的事件才能被JS捕获。
#18
微软是否为ActiveX/COM提供了简单途径访问web文档对象,我没研究过。
但是可以提供给你一个线索,Flash里面是可以调用页面js函数的,Flash也就是页面中的一个ActiveX控件。
但是可以提供给你一个线索,Flash里面是可以调用页面js函数的,Flash也就是页面中的一个ActiveX控件。
#19
请问可以在外部调用COM的程序中在COM事件响应中调用COM方法吗?