以下Demo演示如何在activex中与前台的js进行交互:
activex中:
private mshtml.HTMLWindow2Class window = null; //定义用于操作前台JS的对象
public void SetPage(mshtml.HTMLWindow2Class jsFile) //此方法需要在前台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 οnlοad="setpage()"> //onload后需要传递对象给后台
<object id="myocx" classid="clsid:218849AF-1B2C-457B-ACD5-B42AC8D17EB7" height="200px" width="300px"> //activex控件
</object>
</body>
测试结果:
在控件的button上单击后,出现以下messagebox