首页 > 编程语言 >使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序

使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序

时间:2024-02-06 10:25:09浏览次数:32  
标签:args EnsureHttps Chrome 客服 JavaScript uri 应用程序 WPF

对于在线客服与营销系统,客服端指的是后台提供服务的客服或营销人员,他们使用客服程序在后台观察网站的被访情况,开展营销活动或提供客户服务。在本篇文章中,我将详细介绍如何通过 WPF + Chrome 内核的方式实现复合客服端应用程序。

先看实现效果

客服程序界面中的 聊天记录部分、文字输入框部分 使用的是基于 Chrome 内核的 WebView2 进行呈现的。

客服端

访客端

视频实拍:演示升讯威在线客服系统在网络中断,直接禁用网卡,拔掉网线的情况下,也不丢消息,不出异常。

https://blog.shengxunwei.com/Home/Post/fe432a51-337c-4558-b9e8-347b58cbcd53


要实现这样的效果只需三个步骤

  • 嵌入组件
  • 响应事件
  • 调用 JavaScript 函数

1. 嵌入组件

首先使用 NuGet 将 WebView2 SDK 添加到项目中,然后将 WebView 添加窗口界面。

<Window x:Class="WPF_Getting_Started.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:{YOUR PROJECT NAME}"
        xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
        mc:Ignorable="d"
        Title="MainWindow"
        Height="450"
        Width="800"
>
    <Grid>
     <DockPanel>
     <wv2:WebView2 Name="webView"
                  Source="https://www.microsoft.com"
     />
    </DockPanel>
    </Grid>
</Window>

2. 响应事件

在网页导航期间,WebView2 控件将引发事件。 承载 WebView2 控件的应用侦听以下事件。

  • NavigationStarting
  • SourceChanged
  • ContentLoading
  • HistoryChanged
  • NavigationCompleted

例:修改构造函数以匹配以下代码段并添加 EnsureHttps 函数。


public MainWindow()
{
    InitializeComponent();
    webView.NavigationStarting += EnsureHttps;
}

void EnsureHttps(object sender, CoreWebView2NavigationStartingEventArgs args)
{
    String uri = args.Uri;
    if (!uri.StartsWith("https://"))
    {
        args.Cancel = true;
    }
}

3. 调用 JavaScript 函数

可以在运行时使用主机应用将 JavaScript 代码注入控件。 可以运行任意 JavaScript 或添加初始化脚本。 在删除 JavaScript 之前,注入的 JavaScript 适用于所有新的顶级文档和任何子框架。

例如,添加在用户导航到非 HTTPS 网站时发送警报的脚本。 修改 EnsureHttps 函数以将脚本注入到使用 ExecuteScriptAsync 方法的 Web 内容中。


void EnsureHttps(object sender, CoreWebView2NavigationStartingEventArgs args)
{
    String uri = args.Uri;
    if (!uri.StartsWith("https://"))
    {
        webView.CoreWebView2.ExecuteScriptAsync($"alert('{uri} is not safe, try an https link')");
        args.Cancel = true;
    }
}

完成

只需要以上简单三个步骤,嵌入组件、响应事件、调用 JavaScript 函数。就可以完成 WPF + Chrome 内核 的复合式应用程序!

标签:args,EnsureHttps,Chrome,客服,JavaScript,uri,应用程序,WPF
From: https://www.cnblogs.com/sheng_chao/p/18009246

相关文章

  • 商业银行应用程序接口安全管理
    1、商业银行应用程序接口分为两类,一是资金交易与账户信息查询应用类,级别相对较高。二是金融产品和服务信息查询应用类,级别相对较低。2、接口安全设计。一是身份认证,包括接口身份认证和用户身份认证。接口身份认证主要是APPID与APP_Secret、数字证书、公私钥对的组合。用户身......
  • chrome禁止混合内容(Mixed Content)三种解决办法
    问题描述在Chrome浏览器内,https协议的网站内加载http协议的图片,会报以下错误,图片也会加载不出来。 rust复制代码MixedContent:Thepageat'https://beef.zz.com/front/#/biz/cultivationList/cultivationDetails/5dbf836751ba4b5d9e246ad44f013200'wasloadedover......
  • SSTS兼容Chrome方案
    1.核心架构级代码(1)公共引用《common.js》通过本地Http服务,模拟ActiveXObject(包括Scripting.FileSystemObject、WScript.shell等)《web.webkit.js》该文件为新增,兼容IE和Chrome同步对象和数据、调用公共组件(供Index.html、一级frames等页面引用)《web.system.js》页面加载时调WebTool......
  • 99%离线安装Chrome成功 没有网络也能安装
    原文地址:https://zhuanlan.zhihu.com/p/649737764谷歌浏览器Chrome,现代化的浏览器,使用它来上网是一个非常不错的选择。不过每次我想下载谷歌浏览器时,默认下载到的总是在线安装包,大小大约1~2MB,安装时电脑必须联网,每次都要从网络上下载:不知道你想不想要谷歌浏览器的本地安装包?......
  • 4.WPF样式使用规范
    在Web开发的时候,编写css样式的时候通常是统一写在.css样式文件中。在WPF中也可以使用这样的思想。样式引用:1.新建一个项目用于统一存放样式WPF.UI添加一个资源字典Button.xaml或者CheckBox.xaml等等....<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/......
  • 在Windows 10中,C:\Users\Administrator\AppData目录下存储了当前用户(Administrator
    在Windows10中,C:\Users\Administrator\AppData目录下存储了当前用户(Administrator)的应用程序数据。该目录包含了许多子文件夹,每个子文件夹有不同的功能和用途。以下是一些常见的子文件夹:Local:用于存储应用程序的本地数据,如缓存文件、临时文件等。Roaming:用于存储应用程序的配......
  • Chrome安全沙箱
    Chrome有使用安全沙箱在限制的进程中,对文件,管道,进程,注册表等都有沙箱限制A.dll加载限制加载程序目录下一个dll,失败复制系统的一个dll过来加载,成功修改下这个dll,破坏签名加载,失败跟踪在LdrLoadDll失败可以检查源码相关TargetNtCreateSection,实际限制......
  • 【愚公系列】2024年02月 WPF控件专题 Groupbox控件详解
    ......
  • Edge换内核了?与Chrome孰高孰低?
    新版EdgevsChrome:浏览器两大巨头孰高孰低?自从edge换了Chromium内核以后,它具有了与chrome平起平坐的能力,那么,它与chrome究竟孰高孰低呢?特性对比虽然chrome的简洁程度、速度与功能强大程度不可否认,但是,只能说,chrome有的优点和功能edge都有。并且,众所周知,chrome吃内存方面十分......
  • WPF Prism,mvvm模式下,DataGrid中一列CheckBox的勾选的绑定
    背景WPF+Prism,View和ViewModel,通过Binding来实现数据的更新和界面的刷新,我的需求是做一个表格,第一列为CheckBox,同时这一列的header也是CheckBox,勾选了header的CheckBox,可以实现所有行的CheckBox全选的功能界面如下:实现方法xaml代码:<DataGridx:Name="dgRoundRobin"......