JS触发OCX的EVENT事件问题

三两饺子 2014-02-17 07:35:44
是这样的,我用C++自己封装了个OCX,定义了一个自定义事件SendMessage,在JSP中用JS来处理这个事件,将OCX事件返回的字符串打印在网页上,现在的问题是,我在OCX的一个方法的不同地方Fire这个事件,虽然JS能处理,但是是一起处理的,也就是说在OCX方法运行完成后一次性打印在网页上:
FireSendMessage("1234");
//DO SOMETHING
FireSendMessage("5678");
我向要的效果就是,网页上先打印1234,然后等中间过程处理完,网页上再打印5678,求大神告知该如何解决,是我的OCX问题,还是JS的处理有问题~~~
...全文
316 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vnking 2015-04-15
  • 打赏
  • 举报
回复
我也正在做ocx网页版,有个问题是js如何写函数的参数? ocx是这个消息 FirePlateMessage("USA911", 123); JS这边的怎样写参数啊? <script language="javascript" for="NvrView" event="PlateMessage()"> alert("PlateMessage OK"); </script>
三两饺子 2014-02-18
  • 打赏
  • 举报
回复
引用 5 楼 mengjunquan 的回复:
我个人觉得你没有错,你封装了Fire事件没错,但是在fire事件,同时执行调用两个方法,肯定有一个先,一个后的,js是单线程,所以肯定先从上往下的,故此应该判断是你封装,ocx方法时,可能出现某种出乎意料的事哦
是这样的,我在网页中设置了一个按钮,这个按钮执行了一个JS方法,但这个JS方法调用了OCX中的一个方法,而这个OCX中的方法又触发了多个相同的事件来让网页接收,你收会不会是这个原因,JS这在调用一个方法,所以只有等这个方法完成了再去响应那些事件?因为我让信息打印在网页时是带着时间的,时间是有间隔的,但是是一起打印到网页上的并没有出现间隔~
三两饺子 2014-02-18
  • 打赏
  • 举报
回复
引用 3 楼 crying_boy 的回复:
同步模式或异步模式的问题 没做过OCX开发,但winform来说,你将 //DO SOMETHING FireSendMessage("5678"); 用线程去处理,达到异步执行的话,应该可以达到你要的效果 大致就这么个意思吧
引用 5 楼 mengjunquan 的回复:
我个人觉得你没有错,你封装了Fire事件没错,但是在fire事件,同时执行调用两个方法,肯定有一个先,一个后的,js是单线程,所以肯定先从上往下的,故此应该判断是你封装,ocx方法时,可能出现某种出乎意料的事哦
解决了,C++里面没有DoEvents,自己从网上找了段模拟DoEvents的代码插进去就可以啦~
简易人 2014-02-17
  • 打赏
  • 举报
回复
我个人觉得你没有错,你封装了Fire事件没错,但是在fire事件,同时执行调用两个方法,肯定有一个先,一个后的,js是单线程,所以肯定先从上往下的,故此应该判断是你封装,ocx方法时,可能出现某种出乎意料的事哦
三两饺子 2014-02-17
  • 打赏
  • 举报
回复
引用 3 楼 crying_boy 的回复:
同步模式或异步模式的问题 没做过OCX开发,但winform来说,你将 //DO SOMETHING FireSendMessage("5678"); 用线程去处理,达到异步执行的话,应该可以达到你要的效果 大致就这么个意思吧
如果用线程的话。。。我了个去。。。ocx我还真不知道怎么新建个线程。。。还是谢谢你吧~~
泡泡鱼_ 2014-02-17
  • 打赏
  • 举报
回复
同步模式或异步模式的问题 没做过OCX开发,但winform来说,你将 //DO SOMETHING FireSendMessage("5678"); 用线程去处理,达到异步执行的话,应该可以达到你要的效果 大致就这么个意思吧
三两饺子 2014-02-17
  • 打赏
  • 举报
回复
引用 1 楼 crying_boy 的回复:
看不明白你的意思,按你的代码,就是输出1234,5678呀.在这两段中间又没再输出什么,那当然最终的结果就是只看到12345678
不是,我要的是网页先显示1234,然后后台处理数据要用几秒钟,等处理完了再显示5678,而现在是后台数据处理完成后一起显示。。。
泡泡鱼_ 2014-02-17
  • 打赏
  • 举报
回复
看不明白你的意思,按你的代码,就是输出1234,5678呀.在这两段中间又没再输出什么,那当然最终的结果就是只看到12345678

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧