在winform里怎么调用WebBrowser控件里的脚本

翻译|其它|编辑:郝浩|2007-09-07 10:40:21.000|阅读 1573 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

Jscript  是建立在  COM  之上的,设置变量/调用函数是通过  IDispatch  来实现的。在.NET里,调用  IDispatch  里的方法是通过反射来实现的,即,通过  System.Type.InvokeMember 。该方法调用  IDispatch::GetIDsOfNames  以及  IDispatch::Invoke  来调用  COM Automation  对象里的方法和属性。参考

Binding for Office automation servers with Visual C# .NET

假如有下列  HTML

<script language="javascript">
var var1 = 'yes';
function testx(obj)
{
  alert(obj);
  alert(var1);
}
</script>
<input type=button value="click me" onclick="testx('hello');">

  C#里,假设  axWebBrowser1是你的  WebBrowser  控件对象,你已经装载了上述  HTML,你可以这么做,

mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)axWebBrowser1.Document;
mshtml.IHTMLWindow2 win = (mshtml.IHTMLWindow2)doc.parentWindow;

//读变量值
object o = win.GetType().InvokeMember ("var1", BindingFlags.GetProperty, null, win, new Object [] {});

//写变量值
win.GetType().InvokeMember ("var1", BindingFlags.SetProperty, null, win, new Object [] {"
新的值"});

//调用方法
win.GetType().InvokeMember("testx",BindingFlags.InvokeMethod,null,win,new object[]{1});

比较麻烦,对么?幸运的是,我们不用这么麻烦,因为  IHTMLWindow2里有个现成方法,execScript,我们可以这么做:

win.execScript("var1 = 'abc';","javascript");
win.execScript("testx(12)","javascript");


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP