javascript与c#相互调用

首先建立网页:

  <script language="javascript" type="text/javascript">
  <script language="javascript" type="text/javascript">
         <!-- 提供给C#程序调用的方法 -->
         function messageBox(message)
         {
               alert(message);
        }
  </script>
  <!-- 调用C#方法 -->
  <button onclick="window.external.MyMessageBox(‘javascript访问C#代码‘)" >
  javascript访问C#代码</button>

二、建立Windows应用程序

  1.   创建Windows应用程序项目
    
  2.   在Form1窗体中添加WebBrowser控件
    
  3.   在Form1类的上方添加
    

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

这是为了将该类设置为com可访问。如果不进行该声明将会出错。出错信息如下图所示:

如:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

public partial class Form1 : Form

4.初始化WebBrowser的Url与ObjectForScripting两个属性。

Url属性:WebBrowser控件显示的网页路径

ObjectForScripting属性:该对象可由显示在WebBrowser控件中的网页所包含的脚本代码访问。

将Url属性设置为需要进行操作的页的URL路径。

JavaScript通过window.external调用C#公开的方法。即由ObjectForScripting属性设置的类的实例中所包含的公共方法。具体设置例子如下:

System.IO.FileInfo file = new System.IO.FileInfo(“index.htm”);

// WebBrowser控件显示的网页路径

webBrowser1.Url = new Uri(file.FullName);

// 将当前类设置为可由脚本访问

webBrowser1.ObjectForScripting = this;

5.C#调用JavaScript方法

通过WebBrowser类的Document属性中的InvokeScript方法调用当前网页的Javascript方法。如:

// 调用JavaScript的messageBox方法,并传入参数

object[] objects = new object[1];

objects[0] = “C#访问JavaScript脚本”;

webBrowser1.Document.InvokeScript(“messageBox”, objects);

完整代码如下:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

public partial class Form1 : Form

{

public Form1()

{

   InitializeComponent(); 

   System.IO.FileInfo file = new System.IO.FileInfo("index.htm"); 

   // WebBrowser控件显示的网页路径 

   webBrowser1.Url = new Uri(file.FullName); 

   // 将当前类设置为可由脚本访问 

   webBrowser1.ObjectForScripting = this;

}

private void button1_Click(object sender, EventArgs e)

{ 

   // 调用JavaScript的messageBox方法,并传入参数 

   object[] objects = new object[1]; 

   objects[0] = "C#访问JavaScript脚本"; 

   webBrowser1.Document.InvokeScript("messageBox", objects);

}

// 提供给JavaScript调用的方法

public void MyMessageBox(string message)

{

   MessageBox.Show(message);

}
}

end.

时间: 2024-11-13 09:42:52

javascript与c#相互调用的相关文章

C#代码与JAVASCRIPT函数的相互调用

问:1.如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问JavaScript的已有变量?4.如何在C#中访问JavaScript函数? 问题1答案如下:javaScript函数中执行C#代码中的函数:方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中;        2.在前台写一个js函数,内容为document.getElementById("btn1").click();        3.

Android:WebView与Javascript交互(相互调用参数、传值)

Android中可以使用WebView加载网页,同时Android端的java代码可以与网页上的javascript代码之间相互调用. 效果图: (一)Android部分: 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_widt

C++和JavaScript脚本的相互调用

脚本调用C++相对比较容易,使用ATL组件只需要抛双接口即可,但在exe里如何做到呢?本文实现了在exe里脚本和C++的相互调用.在EXE里也需要对外抛送一个继承自IDispatch的接口.并需要重载它的所有接口.由于水平有限,所以难免有错. // 头文件 static const GUID IID_CExternal = { 0x52fee9af, 0xb3b3, 0x4756, { 0x80, 0x10, 0xfe, 0xa8, 0xf9, 0xfd, 0xd3, 0x3f } }; cla

Hybrid App开发模式中, IOS/Android 和 JavaScript相互调用方式

IOS:Objective-C 和 JavaScript 的相互调用 iOS7以前,iOS SDK 并没有原生提供 js 调用 native 代码的 API.但是 UIWebView 的一个 delegate 方法使我们可以做到让 js 需要调用时,通知 native.在 native 执行完相应调用后,可以用stringByEvaluatingJavaScriptFromString 方法,将执行结果返回给 js.这样,就实现了 js 与 native 代码的相互调用.具体让 js 通知 na

IOS Object和javaScript相互调用

在IOS开发中有时会用到Object和javaScript相互调用,具体步骤如下: 1. Object中执行javascript代码,这个比较简单,苹果提供了很好的方法 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script 2. javascript执行过程中返回给Object的数据或者调用Object方法,这个时候就需要用到 UIWebView的地址重定向功能,主要代码如下: (1)创建UIWebView

[转]C# winform与Javascript的相互调用

C# winform与Javascript的相互调用 <html> <head> <meta http-equiv="Content-Language" content="zh-cn"> <script language="javascript" type="text/javascript"> <!-- 提供给C#程序调用的方法 --> function messag

Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似. 为了让大家容易理解,我写了一个简单的Demo,具体步骤如下: 第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面). 第二步:修改main.xml布局文件,增加了一个WebView控件还有But

开源项目ScriptGate,Delphi与JavaScript相互调用的神器

ScriptGate是一个实现TWebBrowser上的JavaScript和Delphi代码相互调用的库,具体在这里:https://bitbucket.org/freeonterminate/scriptgate 用ScriptGate,我们可以轻松实现JavaScript在Delphi上的使用了,目前支持最新的Delphi tokyo 10.2.3版,注意,属于FMX类型的控件,作者说支持Windows,MacOS,Android及iOS. 我该怎么办? 例如,您可以从Delphi调用以下

Android高手进阶教程(二十)之---Android与JavaScript方法相互调用!

在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似. 为了让大家容易理解,我写了一个简单的Demo,具体步骤如下: 第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面). 第二步:修改main.xml布局文件,增加了一个WebView控件还有But