博客
关于我
.Net中webBrowser控件JS交互
阅读量:787 次
发布时间:2023-01-23

本文共 1096 字,大约阅读时间需要 3 分钟。

.Net程序开发中,若要实现“富”网页程序,JavaScript与C#的交互将是核心方案。本文将介绍两种情境下的代码实现。

C# 调用 JavaScript 函数

要在C#中调用JavaScript函数,需借助WebBrowser控件。以下是常用实现方式:

// 调用 JavaScript 函数object[] objects = new object[1];objects[0] = "param1";this.webBrowser1.Document.InvokeScript("message", objects);

此方法通过直接调用脚本编译后的代码执行JavaScript函数,适用于默认权限环境。

JavaScript 调用 C# 函数

实现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/

    你可能感兴趣的文章
    .Net中webBrowser控件JS交互
    查看>>
    .Net中webBrowser控件指定IE版本
    查看>>
    0-1背包问题:贪心算法与动态规划的比较
    查看>>
    02-docker系列-镜像分类以及操作(导入、导出、删除)
    查看>>
    02-Docker镜像分类及操作秘籍,轻松掌握导出、导入、删除
    查看>>
    03-docker容器的基本操作
    查看>>
    03-docker系列-docker容器的基本操作
    查看>>
    04-docker-commit构建自定义镜像
    查看>>
    04-docker系列-commit构建自定义镜像
    查看>>
    05-docker系列-使用dockerfile构建镜像
    查看>>
    05-如何通过Dockerfile实现高效的应用容器化?
    查看>>
    06-docker系列-使用dockerfile构建nginx、redis镜像
    查看>>
    06-使用dockerfile构建nginx、redis镜像
    查看>>
    07-docker系列-使用dockerfile构建python、jenkins镜像
    查看>>
    07-使用dockerfile构建python、jenkins镜像
    查看>>
    08-docker系列-docker网络你了解多少(上)
    查看>>
    09-docker系列-docker网络你了解多少(下)
    查看>>
    1 解决XP重装后原文件夹拒绝访问
    查看>>
    10-docker系列-docker文件共享和特权模式
    查看>>
    #AMBA##AHB总线学习
    查看>>