c# 开发 ActiveX,用 JS 怎么捕获事件

问题描述

js代码:<inputtype="button"value="发送消息"onclick="Send();"/><inputtype="text"id="txtData"/><objectid="GpsActiveX"classid="clsid:31B11F5C-5B01-4A8C-8119-3710CB1C8ECC"></object><scripttype="text/javascript"language="javascript">GpsActiveX.Init(window,'192.168.16.14','8000');functionClientTest(t){alert(t);}functionSend(){GpsActiveX.SendToServer(document.getElementById("txtData").value);}</script><scriptlanguage="javascript"event="OnGps(vid,gps)"for="GpsActiveX">alert(vid);</script>比如这个OnGps怎么在OCX抛出来给JS获取以上可以调用OXC里面的方法,就是事件,在OCX里面不知道怎么写,才能让event捕获。c#代码:[Guid("31B11F5C-5B01-4A8C-8119-3710CB1C8ECC")]publicpartialclassWebGpsServer:UserControl,IObjectSafety{mshtml.HTMLWindow2Classhtml;//执行客户端脚本stringip="127.0.0.1";intport=8000;privateIPAddressserverIP;privateIPEndPointserverFullAddr;privateSocketsock;publicWebGpsServer(){InitializeComponent();}#regionIObjectSafety成员//............#endregionpublicvoidInit(objectobj,stringip,intport){html=(mshtml.HTMLWindow2Class)obj;this.ip=ip;this.port=port;Start();}privatevoidStart(){serverIP=IPAddress.Parse(ip);serverFullAddr=newIPEndPoint(serverIP,port);sock=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);sock.Connect(serverFullAddr);Threadt=newThread(newThreadStart(ReceiveMsg));t.Name="ReceiveMessage";t.IsBackground=true;t.Start();byte[]byteSend=System.Text.Encoding.GetEncoding("gb2312").GetBytes("新成员:"+Dns.GetHostName()+"n");try{this.sock.Send(byteSend);}catch{html.execScript("ClientTest('Error');","javascript");}html.execScript("ClientTest('连接成功!');","javascript");//html.execScript这个是执行客户端的JS方法}privatevoidReceiveMsg(){try{while(true){byte[]byteRec=newbyte[100];this.sock.Receive(byteRec);stringstrRec=System.Text.Encoding.GetEncoding("gb2312").GetString(byteRec);if(this.label1.InvokeRequired){this.label1.Invoke(newEventHandler(ChangeRtb),newobject[]{strRec,EventArgs.Empty});}//这里不能使用html.execScript这种方法,所以想修改成捕获事件//异常如下:无法将类型为mshtml.HTMLWindow2Class的COM对象强制转换为接口类型mshtml.DispHTMLWindow2//html.execScript("ClientTest('"+strRec+"');","javascript");}}catch(Exceptionex){MessageBox.Show("ReceiveMessageError"+ex.Message);}}privatevoidChangeRtb(objectobj,EventArgse){strings=System.Convert.ToString(obj);label1.Text=s;//这里不能使用html.execScript这种方法,所以想修改成捕获事件//异常信息如下:由于出现错误80080101而导致此项操作无法完成//html.execScript("ClientTest('"+s+"');","javascript");}//发送消息给服务器publicvoidSendToServer(stringdatas){byte[]byteSend=System.Text.Encoding.GetEncoding("gb2312").GetBytes(Dns.GetHostName()+":"+datas+"n");this.sock.Send(byteSend);}}

解决方案

解决方案二:
这个问题已经困扰3天了,这个是我所有的分了,希望大家能帮小弟解决。一直在线等。
解决方案三:
没有人会吗?还是我描述不清楚啊?
解决方案四:
大家可以出来帮帮忙吗,急死人了。
解决方案五:
我也遇到一样问题郁闷中啊
解决方案六:
终于解决了,研究了3天啊。。
解决方案七:
怎么解决的a

时间: 2024-08-03 19:47:04

c# 开发 ActiveX,用 JS 怎么捕获事件的相关文章

js冒泡、捕获事件及阻止冒泡方法详细总结_javascript技巧

javascript, jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结. 事件冒泡是一个从子节点向祖先节点冒泡的过程: 事件捕获刚好相反,是从祖先节点到子节点的过程. 给一个jquery点击事件的例子: 代码如下: 复制代码 代码如下: <!DOCTYPE html> <meta charset="utf-8"> <title>test</title> <head> <scrip

asp.net-请教ASP.NET MVC开发的网站,在手机浏览器上js点击事件失效的问题

问题描述 请教ASP.NET MVC开发的网站,在手机浏览器上js点击事件失效的问题 之前没有接触过手机浏览器端的东西,一直做的是web方面,最近刚做了一个新项目刚刚上线,是一个挖宝游戏,http://wabao.edushi.com 经理要求把手机端兼容性弄一下让手机端也可以正常使用,但是我发现用手机访问,很多点击事件都失效了,有一部分还是有效的,不明白为什么,我用chrome的toggle device mode,也是某些按钮是有效的某些按钮点了就没反应,console也没报错,完全不知道问

js浏览器-js怎么捕获浏览器里的后退事件

问题描述 js怎么捕获浏览器里的后退事件 最近做一个微信项目,提交表单后,后退要刷新页面.网上找了一个禁止缓存.jsp页面是刷新了,但java代码没刷新.求解决 解决方案 用fiddler看下,你的"刷新"有没有产生新的http请求到你的服务器,如果没有,加上一个随机数作为url参数,强制浏览器获取下. 解决方案二: JS捕获关闭浏览器事件

JS中的事件冒泡与捕获

刚接触 JS 的那个时候,啥也不懂,只想着如何利用 Google.百度到的函数来解决实际的问题,不会想到去一探究竟. 渐渐的,对 JS 的语言的不断深入,有机会去了解一些原理性东西.最近在看 JQuery 源码,感触很多,总想着用原生的 JS 去实现自己的一个 JQuery 库.说实在的,JQuery 里面很多函数和思路,是千百开源工作者长期的贡献,哪能是短时间就能消化的了. 最近再次碰到 addEventListener函数(MDN 上关于 addEventListener 的介绍,很详细),

.Net魔法堂:史上最全的ActiveX开发教程——ActiveX与JS间交互篇

一.前言   经过上几篇的学习,现在我们已经掌握了ActiveX的整个开发过程,但要发挥ActiveX的真正威力,必须依靠JS.下面一起来学习吧!   二.JS调用ActiveX方法   只需在UserControl子类中(即自定义的ActiveX控件中),编写公共方法即可.   C# [Guid("0203DABD-51B8-4E8E-A1EB-156950EE1668")] public partial class Uploader : UserControl, IObjectSa

《ExtJS 3详解与实践》阅读补充资料:capture()捕获事件

静态方法Ext.util.Observable.capture()是一项有趣的功能,它能够将一项事件进行捕获,跟踪该事件发生的经过.捕获事件就是观察Ext JS事件的调用过程.只要是继承了 Ext.util.Observable的组件,调用capture(),便可得知该组件何时何地怎样响应事件,也算是调试组件时的技巧. // 假设已有一个名为'myWindow'的UI组件,用Ext.getCmp()返回该对象. Ext.util.Observable.capture(Ext.getCmp('my

java捕获事件

大家可注意到假如编译和运行上面的程序片,按下按钮后不会发生任何事情.必须进入程序片内部,编写用于决定要发生什么事情的代码.对于由事件驱动的程序设计,它的基本目标就是用代码捕获发生的事件,并由代码对那些事件作出响应.事实上,GUI的大部分内容都是围绕这种事件驱动的程序设计展开的. 经过本书前面的学习,大家应该有了面向对象程序设计的一些基础,此时可能会想到应当有一些面向对象的方法来专门控制事件.例如,也许不得不继承每个按钮,并过载一些"按钮按下"方法(尽管这显得非常麻烦有有限).大家也可能

javascript-安卓开发webview与js交互

问题描述 安卓开发webview与js交互 关于安卓webview与js交互的问题,我这里的附件是网上下载的一抽奖网页,我想把它加载在webview里,然后在webview里运行后能够弹出来相应的提示(Toast弹出),比如抽到苹果,就弹出来个Toast,提示苹果可能网页需要稍微修改一下,无奈自己做不出来啊,请大神帮助,最好上个成品,我这里实在是没有C币,上不了分了 附件地址 http://pan.baidu.com/share/link?shareid=3352172372&uk=406603

一探前端开发中的JS调试技巧

友情提示:文中涉及较多Gif演示动画,移动端请尽量在Wifi环境中阅读 前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今天,如何在前端开发中降低开发成本,提升工作效率,掌握前端开发调试技巧尤为重要. 本文将一一讲解各种前端JS调试技巧,也许你已经熟练掌握,那让我们一起来温习,也许有你没见过的方法,不妨一起来学习,也许你尚不知如何调试,赶紧趁此机会