本文共 1096 字,大约阅读时间需要 3 分钟。
.Net程序开发中,若要实现“富”网页程序,JavaScript与C#的交互将是核心方案。本文将介绍两种情境下的代码实现。
要在C#中调用JavaScript函数,需借助WebBrowser
控件。以下是常用实现方式:
// 调用 JavaScript 函数object[] objects = new object[1];objects[0] = "param1";this.webBrowser1.Document.InvokeScript("message", objects);
此方法通过直接调用脚本编译后的代码执行JavaScript函数,适用于默认权限环境。
实现JavaScript调用的C#函数,那么就需要将C#类设置为可脚本访问:
using System.Security.Permissions;[PermissionSet(SecurityAction.Demand, Name = "FullTrust")][ComVisible(true)]public partial class FormMain : Form{ public FormMain() { InitializeComponent(); this.webBrowserMain.ObjectForScripting = this; } public void ShowMessage(string msg) { MessageBox.Show("JS 交互", msg); }}
在此基础上,JavaScript可通过全局对象window.external
调用C#函数:
try{ window.external.ShowMessage("message!");}catch (err){ alert("无法调用C#函数!");}
需要注意的是,window.external
必须将C#类注册为可脚本访问对象。
安全权限:使用[PermissionSet] Ensure right permissions for scripting .
界面初始设置:确保在构造函数中设置ObjectForScripting
property.
尝试错误捕捉:在 JavaScript 中使用try-catch捕获可能的调用错误。
这些代码片段可以帮助开发者在Net程序中实现JavaScript与C#的双向交互,实现 RIAs。
转载地址:http://yteyk.baihongyu.com/