转自:http://www.verydemo.com/demo_c98_i7826.html
以下Demo演示如何在activex中与前台的js进行交互:
activex中:
- private mshtml.HTMLWindow2Class window = null; //定义用于操作<strong>前台</strong>JS的对象
- public void SetPage(mshtml.HTMLWindow2Class jsFile) //此方法需要在<strong>前台</strong>JS载入完成后调用
- {
- window = jsFile; //赋值完成之后,window就是一个可以在后台操作的页面对象了
- }
- private void button2_Click(object sender, EventArgs e) //这是activex控件里面的一个button
- {
- string script = string.Format("testjs('{0}')",DateTime.Now.ToLongTimeString()); //测试调用JS的函数输出当前时间
- window.execScript(script, "JavaScript"); //调用函数,第二个参数为脚本名称,这里填写“JavaScript”
- }
前台:
- <script type="text/javascript">
- function testjs(obj) { //这是后台要调用的函数
- alert(obj);
- }
- function setpage() {
- myocx.SetPage(this); //将当前的页面对象传递给后台,即调用activex控件的SetPage方法
- }
- </script>
- <body onload="setpage()"> //onload后需要传递对象给后台
- <object id="myocx" classid="clsid:218849AF-1B2C-457B-ACD5-B42AC8D17EB7" height="200px" width="300px"> //activex控件
- </object>
- </body>
测试结果:
在控件的button上单击后,出现以下messagebox