新发的日常小实验——使用c# winfrom窗体应用制作浏览器,实现c#与html js交互

文章目录

      • 一、前言
      • 二、问题
      • 三、具体实现
        • 1、写js代码
        • 2、启动web服务器
        • 3、创建winform窗体应用工程
        • 4、写c#代码
        • 5、运行测试

一、前言

假设,现在我想做一个浏览器,用c# winfrom窗体应用制作,浏览器执行一段js代码,然后把js的执行结果返回给浏览器的c#,然后在c#做进一步的逻辑处理。

二、问题

网页的js与浏览器的c#如何交互呢?
新发的日常小实验——使用c# winfrom窗体应用制作浏览器,实现c#与html js交互_第1张图片

三、具体实现

1、写js代码

html.test代码如下


<html>
<head>
<meta charset="utf-8">
<title>测试title>
head>
<body>
<h1>我是一个 JavaScript 程序h1>
body>
html>

<script>
//提供改c#调用
function TestAdd(a, b)
{
      
    var sum = a + b;
    //js调用c#的OnJsCall函数
    window.external.OnJsCall(a + "+" + b + "="+ sum);
} 
script>

2、启动web服务器

python启动一个简单的web服务器

py -3 -m http.server 8988

新发的日常小实验——使用c# winfrom窗体应用制作浏览器,实现c#与html js交互_第2张图片

3、创建winform窗体应用工程

创建一个winform窗体应用工程,简单地摆个WebBrowser控件。
新发的日常小实验——使用c# winfrom窗体应用制作浏览器,实现c#与html js交互_第3张图片

4、写c#代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WebView
{
     
    //当前类可以com组件的形式供外包调用
    [System.Runtime.InteropServices.ComVisible(true)]
    public partial class Form1 : Form
    {
     
        public Form1()
        {
     
            InitializeComponent();

            //注册监听对象
            this.webBrowser.ObjectForScripting = this;

            //访问html
            webBrowser.Navigate("http://localhost:8988/test.html");
        }

        /// 
        /// js调用c#
        /// 
        public void OnJsCall(string result)
        {
     
            sumLbl.Text = result;
        }

        private void OnBtnClick(object sender, EventArgs e)
        {
     
            try
            {
     
                //c#调用js
                object[] objects = new object[2];
                objects[0] = 2;
                objects[1] = 5;
                webBrowser.Document.InvokeScript("TestAdd", objects);
            }
            catch (Exception exception)
            {
     
                Console.WriteLine(exception);
            }
        }
    }
}

5、运行测试

新发的日常小实验——使用c# winfrom窗体应用制作浏览器,实现c#与html js交互_第4张图片

你可能感兴趣的:(windows,C#,JavaScript,c#,javascript,js,web,浏览器)