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

原创 2007年09月06日 19:04:00

这是在CSDN论坛上的一个问题,感觉也许对其他人也会有点用处,所以贴出来

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");

 

winform窗体中调用Webbrowser控件里的JS方法和

页面中增加一个按钮和WebBrowser控件 using System; using System.Collections.Generic; using System.ComponentModel;...
  • liujun198773
  • liujun198773
  • 2013年01月09日 16:45
  • 3176

MFC调用WebBrowser控件直接编写javascript代码及其他WebBrowser相关技巧

在mfc操作网页的过程中,使用ActiveX控件
  • oHanTanYanYing
  • oHanTanYanYing
  • 2014年04月14日 23:34
  • 2370

MFC中WebBrowser.Navigate方法如何调用本地的.htm文件?

----------------------------------------------------------------------------------------------------...
  • to_Baidu
  • to_Baidu
  • 2017年04月29日 23:57
  • 1553

解决WebBrowser控件打开本地页面报安全提示的问题

今天用C#封装了WebBrowser控件去打开一个本地页面,页面中包含了javascript脚本,该脚本通过WebBrowser的ObjectForScripting属性,访问C#代码。代码非常简单,...
  • jiangfuqiang
  • jiangfuqiang
  • 2013年12月13日 17:09
  • 15449

c#多选项卡的浏览器控件的设计及实现

2.2.  TabControl控件 TabControl 控件是Windows 窗体多个选项卡控件,这些选项卡类似于笔记本中的分隔卡和档案柜文件夹中的标签。选项卡中可包含图片和其他控件。您...
  • fsqcy
  • fsqcy
  • 2013年03月24日 16:57
  • 1949

C#Winform将WebBowser控件替换为Chrome内核

C#Winform将WebBowser控件替换为Chrome内核
  • yangyisen0713
  • yangyisen0713
  • 2016年12月29日 15:21
  • 9116

VC++和C#(WinForm)中WebBrowser(IE内核浏览器)加载第三方BHO解决方案

本程序功能描述: 本程序是一个MFC基于对话框的程序,添加了一个WebBrowser控件,这个WebBrowser控件可以加载其它IE BHO插件(已知CLSID),使第三方BHO插件在本程序中正...
  • ts1011
  • ts1011
  • 2014年02月28日 11:12
  • 2890

Winform调用WebKitBrowser,基于chrome内核WebKit的浏览器控件

在C#中,默认的WebBrowser控件默认使用的是IE的core,而IE的种种遭人吐槽的诟病使我不敢轻易使用WebBrowser,因此,打算使用Chrome的内核替换IE。Chrome的内核使用的是...
  • e62ces0iem
  • e62ces0iem
  • 2017年06月19日 21:14
  • 4912

WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互

方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址   http://www.microsoft.com/downloads/d...
  • meixiafeng
  • meixiafeng
  • 2016年10月10日 10:00
  • 1732

WebBrowser页面与WinForm交互技巧

现在有这样一个Windows Application,它的界面上只有一个WebBrowser,显示一个本地的HTML文件作为界面。现在的问题是,所有逻辑都可以放在HTML文件里,唯独“关闭”按钮遇到了...
  • itoccupant
  • itoccupant
  • 2014年06月20日 17:35
  • 758
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在winform里怎么调用WebBrowser控件里的脚本
举报原因:
原因补充:

(最多只允许输入30个字)