返回顶部
首页 > 资讯 > 精选 >C#怎么使用CefSharp实现内嵌网页
  • 638
分享到

C#怎么使用CefSharp实现内嵌网页

2023-07-05 21:07:44 638人浏览 安东尼
摘要

本文小编为大家详细介绍“C#怎么使用CefSharp实现内嵌网页”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么使用CefSharp实现内嵌网页”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. 创建项目

本文小编为大家详细介绍“C#怎么使用CefSharp实现内嵌网页”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么使用CefSharp实现内嵌网页”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    1. 创建项目

    创建一个WPF项目,比如命名为“WpfWithCefSharpDemo”,winform项目类似。

    2. 创建一个网页

    嵌入的网页可以是在线的(即给出一个URL),也可以是一个离线的html网页,本文为了演示,在工程里直接创建网页test.html,属性设置生成操作为内容,复制到输出目录为如果较新则复制。

    <!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>CefSharp测试</title>    <script>        // 测试在WEB中调用C#的方法        function callCSharpMethod() {            window.cefSharpExample.testMethod("来自js的调用");        }        // 测试C#调用JS的方法,只传递一个普通的字符串        function displayMessage(message) {            alert(message);        }        // 接收C#传递过来的JSON对象,并以表格形式展示在页面上        function displayJson(json) {            var obj = JSON.parse(json);            var html = "<table border='1'>";            for (var prop in obj) {                html += "<tr>";                html += "<td>" + prop + "</td>"                html += "<td>" + obj[prop] + "</td>"                html += "</tr>"            }            html += "</table>";            document.getElementById("jsonTable").innerHTML = html;        }        </script></head><body><h2>CefSharp测试</h2><button onclick="callCSharpMethod()">调用C#方法</button><div id="jsonTable"></div></body></html>

    上面的代码给了相关的注释,应该很明了:

    • JS方法callCSharpMethod:用于测试JS调用C#的方法,其中cefSharpExample为C#注册的一个对象,testMethod是其一个方法,JS中方法名首字母是小写(C#里按规则是大写),首字母这里有区别,要注意一下;

    • JS方法displayMessagedisplayJson:用于测试C#调用JS的方法,方法定义类似,前者入参是一个普通字符串,后者入参是一个JSON字符串。

    • div元素jsonTable用于展示C#传来的JSon对象数据。

    3. 添加CefSharp包

    安装CefSharp程序包,可以在Visual Studio的NuGet包管理器中搜索CefSharp.Wpf并安装。

    4. 添加CefSharp控件

    MainWindow.xaml中引入CefSharp.Wpf命名空间(取别名为wpf,这里随意),将它的chromium控件加入到窗体中,顺带加几个测试按钮等:

    <Window x:Class="WpfWithCefSharpDemo.MainWindow"        xmlns="Http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:mc="http://schemas.openxmlfORMats.org/markup-compatibility/2006"        xmlns:wpf="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"        mc:Ignorable="d"        Title="WPF加载CefSharp测试" Height="450" Width="800">    <Grid>        <Grid.RowDefinitions>            <RowDefinition Height="35"></RowDefinition>            <RowDefinition Height="*"></RowDefinition>            <RowDefinition Height="50"></RowDefinition>        </Grid.RowDefinitions>        <TextBlock Text="下面显示的是网页内容"></TextBlock>        <Border Grid.Row="1" BorderBrush="DarkOrange" BorderThickness="2">            <wpf:ChromiumWebBrowser x:Name="Browser" Loaded="Browser_OnLoaded">            </wpf:ChromiumWebBrowser>        </Border>        <Border Margin="3 5" Grid.Row="2" BorderBrush="Blue" BorderThickness="2" VerticalAlignment="Center">            <StackPanel Orientation="Horizontal" Height="35">                <TextBlock Text="右侧按钮是WPF按钮" VerticalAlignment="Center" Margin="5 3"></TextBlock>                <Button Content="调用JS方法" Click="CallJSFunc_Click" Height="30" Padding="10 2"></Button>                <Button Content="C#传递Json对象到网页" Click="SendJsonToWeb_Click" Height="30" Padding="10 2"></Button>            </StackPanel>        </Border>    </Grid></Window>

    5. 在C#中调用JS方法

    MainWindow.xaml.cs里,添加相关控件的事件处理方法,即C#调用JS方法的相关代码:

    using CefSharp;using Newtonsoft.Json;using System;using System.IO;using System.Text;using System.windows;namespace WpfWithCefSharpDemo{    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();            // 允许以同步的方式注册C#的对象到JS中            Browser.javascriptObjectRepository.Settings.LegacyBindingEnabled = true;            CefSharpSettings.WcfEnabled = true;            // 注册C#的对象到JS中的代码必须在Cef的Browser加载之前调用            Browser.JavascriptObjectRepository.ReGISter("cefSharpExample", new CefSharpExample(), false,                options: BindinGoptions.DefaultBinder);        }        /// <summary>        /// Cef浏览器控件加载完成后,加载网页内容,可以加载网页的Url,也可以加载网页内容        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void Browser_OnLoaded(object sender, RoutedEventArgs e)        {            var htmlFile = $"{AppDomain.CurrentDomain.BaseDirectory}test.html";            if (!File.Exists(htmlFile))            {                return;            }            var htmlContent = File.ReadAllText(htmlFile, Encoding.UTF8);            Browser.LoadHtml(htmlContent);        }        /// <summary>        /// C#里调用JS的一般方法        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void CallJSFunc_Click(object sender, RoutedEventArgs e)        {            var jsCode = $"displayMessage('C#里的调用')";            Browser.ExecuteScriptAsync(jsCode);        }        /// <summary>        /// C#调用一个JS的方法,并传递一个JSON对象        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void SendJsonToWeb_Click(object sender, RoutedEventArgs e)        {            var jsonContent = new            {                Id = 1,                Name = "沙漠尽头的狼",                Age = 25,                WebSite="https://dotnet9.com"            };            var jsonStr = JsonConvert.SerializeObject(jsonContent);            // 传递Json对象,即传递一个JSON字符串,和前面的一个示例一样            var jsCode = $"displayJson('{jsonStr}')";            Browser.ExecuteScriptAsync(jsCode);        }    }    public class CefSharpExample    {        public void TestMethod(string message)        {            Application.Current.Dispatcher.Invoke(() => { MessageBox.Show("JS里的调用"); });        }    }}

    CefSharpExample用于封装JS调用的类及方法定义,注意C#这里TestMethod方法名首字母是大写的,前面创建的HTML网页调用的该方法名首字母小写,再提醒一次,这里的区别要注意。

    6. 效果展示

    JS调用C#的方法:黄色方框内显示的网页内容,点击HTML按钮调用C#方法测试。

    C#怎么使用CefSharp实现内嵌网页

    C#调用JS的普通方法:蓝色方框内显示的WPF控件,点击WPF按钮调用JS方法测试。

    C#怎么使用CefSharp实现内嵌网页

    C#传递Json对象给JS的方法:蓝色方框内,点击WPF按钮C#传递Json对象到网页测试。

    C#怎么使用CefSharp实现内嵌网页

    读到这里,这篇“C#怎么使用CefSharp实现内嵌网页”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: C#怎么使用CefSharp实现内嵌网页

    本文链接: https://lsjlt.com/news/355396.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • C#怎么使用CefSharp实现内嵌网页
      本文小编为大家详细介绍“C#怎么使用CefSharp实现内嵌网页”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么使用CefSharp实现内嵌网页”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. 创建项目...
      99+
      2023-07-05
    • C#使用CefSharp实现内嵌网页详解
      目录一、示例搭建步骤1. 创建项目2. 创建一个网页3. 添加CefSharp包4. 添加CefSharp控件5. 在C#中调用JS方法6. 效果展示二、总结一、示例搭建步骤 先给出...
      99+
      2023-05-14
      C# CefSharp实现内嵌网页 C# CefSharp内嵌网页 C# CefSharp
    • C#使用CefSharp控件实现爬虫
      一、CefSharp介绍 CEF 全称是Chromium Embedded Framework(Chromium嵌入式框架),是个基于Google Chromium项目的开源Web ...
      99+
      2024-04-02
    • C#使用CefSharp自定义缓存实现
      本文介绍CefSharp的缓存实现,先来说说添加缓存的好处: 提高页面加载加速:CefSharp缓存可以缓存已经加载过的页面和资源,当用户再次访问相同的页面时,可以直接从缓存中加载,...
      99+
      2023-05-18
      CefSharp自定义缓存 CefSharp基本配置 缓存 cefsharp教程
    • HTML <iframe>内嵌网页框架标签怎么使用
      今天小编给大家分享一下HTML <iframe>内嵌网页框架标签怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文...
      99+
      2024-04-02
    • 如何使用data URI scheme在网页中内嵌图片
      这篇文章将为大家详细讲解有关如何使用data URI scheme在网页中内嵌图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。data URI scheme 允许我们使用内联(inline-code)的...
      99+
      2023-06-08
    • HTML中怎么使用iframe在当前网页中嵌入其他网页
      本文小编为大家详细介绍“HTML中怎么使用iframe在当前网页中嵌入其他网页”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML中怎么使用iframe在当前网页中嵌入其他网页”文章能帮助大家解决疑惑,...
      99+
      2024-04-02
    • 怎么使用PHP实现网页跳转
      本篇内容介绍了“怎么使用PHP实现网页跳转”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 使用 header 函数实现网页跳转PHP 中...
      99+
      2023-07-05
    • 如何使用html canvas实现网页截图并嵌入到PDF
      本文小编为大家详细介绍“如何使用html canvas实现网页截图并嵌入到PDF”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用html canvas实现网页截图并嵌入到PDF”文章能帮助大家解决疑...
      99+
      2024-04-02
    • 怎么使用JavaScript实现网页计算器
      这篇文章主要介绍“怎么使用JavaScript实现网页计算器”,在日常操作中,相信很多人在怎么使用JavaScript实现网页计算器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用JavaScript实...
      99+
      2023-07-02
    • 怎么使用PHP websocket实现网页实时聊天
      小编给大家分享一下怎么使用PHP websocket实现网页实时聊天,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文开始前,先贴一张聊天室的效果图(请不要在意C...
      99+
      2023-06-15
    • Python怎么使用BeautifulSoup4修改网页内容
      这篇文章主要介绍了Python怎么使用BeautifulSoup4修改网页内容的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么使用BeautifulSoup4修改网页内容文章都会有所收获,下面我们...
      99+
      2023-06-30
    • 怎么使用JavaScript实现网页电子时钟
      这篇文章主要讲解了“怎么使用JavaScript实现网页电子时钟”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用JavaScript实现网页电子时钟”吧!如图就是一个简易的网页电子时钟...
      99+
      2023-07-02
    • 钉钉小程序web-view怎么内嵌H5页面并实现通信
      这篇文章主要介绍了钉钉小程序web-view怎么内嵌H5页面并实现通信的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇钉钉小程序web-view怎么内嵌H5页面并实现通信文章都会有所收获,下面我们一起来看看吧。1...
      99+
      2023-06-30
    • 使用Nodejs怎么实现内网穿透服务
      这篇文章给大家介绍使用Nodejs怎么实现内网穿透服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 局域网内代理我们先来回顾上篇,如何实现一个局域网内的服务代理?因为这个非常简单,所以,直接上代码。const&n...
      99+
      2023-06-15
    • 怎么用vue实现网页截图
      这篇文章给大家分享的是有关怎么用vue实现网页截图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、安装html2Canvasnpm install html2canvas --sa...
      99+
      2023-06-25
    • iframe嵌套页面单点登录怎么实现
      要实现iframe嵌套页面的单点登录,可以按照以下步骤进行:1. 在主页面中,使用一个iframe来嵌入需要进行单点登录的子页面。2...
      99+
      2023-08-08
      iframe
    • 怎么使用云服务器实现内网穿透
      使用云服务器实现内网穿透可能需要您提供内网IP地址和端口号,以便管理员可以在云主机上创建私有网络。内网穿透的过程可以大致如下: 确定需要穿透的内网地址和端口号:在云服务器上安装相应的客户端程序和脚本,例如:https://ycloud....
      99+
      2023-10-26
      内网 服务器
    • 使用ajax怎么实现微信网页授权登录
      今天就跟大家聊聊有关使用ajax怎么实现微信网页授权登录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。功能实现引导用户唤起微信授权确认页面这里需要我们做两件事,第一去配置jsapi域...
      99+
      2023-06-08
    • 怎么在CSS3 中使用@media 实现网页自适应
      这期内容当中小编将会给大家带来有关怎么在CSS3 中使用@media 实现网页自适应,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、CSS2 中的@mediacss2里面虽然支持@media属性,但是能...
      99+
      2023-06-08
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作