赞
踩
假设,现在我想做一个浏览器,用c# winfrom
窗体应用制作,浏览器执行一段js
代码,然后把js
的执行结果返回给浏览器的c#
,然后在c#
做进一步的逻辑处理。
网页的js
与浏览器的c#
如何交互呢?
html.test
代码如下
<!DOCTYPE html>
<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>
用python
启动一个简单的web服务器
py -3 -m http.server 8988
创建一个winform
窗体应用工程,简单地摆个WebBrowser
控件。
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");
}
/// <summary>
/// js调用c#
/// </summary>
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);
}
}
}
}
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。