转自:http://hi.baidu.com/ass100000/blog/item/175234b65f4ddb648bd4b287.html
C# winform与Javascript的相互调用
![]() ![]() <html> <head> <meta http-equiv="Content-Language" content="zh-cn"> <script language="javascript" type="text/javascript"> <!-- 提供给C#程序调用的方法 --> function messageBox(message) { alert(message); } </script> </head> <body> <!-- 调用C#方法 --> <button onclick="window.external.MyMessageBox('javascript访问C#代码')"> javascript访问C#代码</button> </body> </html><html> <head> <meta http-equiv="Content-Language" content="zh-cn"> <script language="javascript" type="text/javascript"> <!-- 提供给C#程序调用的方法 --> function messageBox(message) { alert(message); } </script> </head> <body> <!-- 调用C#方法 --> <button onclick="window.external.MyMessageBox('javascript访问C#代码')"> javascript访问C#代码</button> </body> </html> 二、建立Windows应用程序 1.创建Windows应用程序项目 [System.Runtime.InteropServices.ComVisibleAttribute(true)] Url属性:WebBrowser控件显示的网页路径 ObjectForScripting属性:该对象可由显示在WebBrowser控件中的网页所包含的脚本代码访问。 将Url属性设置为需要进行操作的页的URL路径。 JavaScript通过window.external调用C#公开的方法。即由ObjectForScripting属性设置的类的实例中所包含的公共方法。具体设置例子如下: System.IO.FileInfo file = new System.IO.FileInfo("index.htm"); 5.C#调用JavaScript方法 通过WebBrowser类的Document属性中的InvokeScript方法调用当前网页的Javascript方法。如: 完整代码如下: ============================================================================== JS脚本代码: < script language = " javascript " type = " text/javascript " > var g_h = 55 ; function displayVar(varname) { try { return eval(varname); } catch (e) { return e.description; } } < / script>
object [] paramArray = new object [ 1 ]; paramArray[ 0 ] = " g_h " ; webBrowser1.Document.InvokeScript( " displayVar " , paramArray); 也可以用这样来调用: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 与脚本的互操作 在Case 1当中,我们已经看到,Web页面的HTML元素的事件,可以由Windows Form端来响应,可以在某种程度上看作是Web页面调用WinForm;那么反过 来,WinForm除了可以直接访问Web页面的HTML元素之外,能否调用Web页面里的各种Script呢? 首先是调用Web页面的脚本中已经定义好的函数。假设HTML中有如下Javascript: function DoAdd(a, b) { object oSum = webBrowser.Document.InvokeScript("DoAdd", new object[] { 1, 2 }); 串作为脚本代码来执行。 string scriptline01 = @"function ShowPageInfo() {"; string strScript = scriptline01 + scriptline02 + scriptline03 + scriptline04 + scriptline05 + IHTMLWindow2 win = (IHTMLWindow2)webBrowser.Document.Window.DomWindow; |